使用 Hibernate 和 JSP 创建表和数据未保存
Posted
技术标签:
【中文标题】使用 Hibernate 和 JSP 创建表和数据未保存【英文标题】:Table Creation and data not getting save using Hibernate and JSP 【发布时间】:2015-02-26 07:03:14 【问题描述】:我是 hibernate 的新手,第一次使用它。我正在创建一个简单的表单,用于使用 Hibernate 和 JSP 页面将数据保存在我的数据库 (mysql) 中。但是当我点击注册按钮时,我的第二页打开但页面为空。我的数据没有保存在数据库中,也没有创建表。 请告诉我我想念的东西 我的代码是
用户.java
public class User
private int id;
private String name;
private String password;
private String email;
public int getId()
return id;
//getter and setter
Index.jsp 文件
<form action="register.jsp" method="post">
Name:<input type="text" name="name"/><br><br/>
Password:<input type="password" name="password"/><br><br/>
Email ID:<input type="text" name="email"/><br><br/>
<input type="submit" value="register"/>"
UserDao.java 文件
package com.mypack.bean;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class UserDao
public static int register(User u)
int i=0;
Session session=new Configuration().
configure().buildSessionFactory().openSession();
Transaction t=session.beginTransaction();
t.begin();
i=(Integer)session.save(u);
t.commit();
session.close();
return i;
register.jsp 文件
<%@page import="com.mypack.bean.UserDao"%>
<jsp:useBean id="obj" class="com.mypack.bean.User">
</jsp:useBean>
<jsp:setProperty property="*" name="obj"/>
<%
out.println("inside");
int i=UserDao.register(obj);
if(i>0)
out.print("You are successfully registered");
%>
// hibernate.cfg.xml file
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/taskmanager</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"/>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.show_sql">true</property>
<mapping resource ="user.hbm.xml"/>
</session-factory>
</hibernate-configuration>
user.hbm.xml 文件
<hibernate-mapping>
<class name="com.mypack.bean.User" table="userstable">
<id name="id">
<generator class="assigned"></generator>
</id>
<property name="name"></property>
<property name="password"></property>
<property name="email"></property>
</class>
</hibernate-mapping>
【问题讨论】:
【参考方案1】:需要进行以下更改,
1) 每个 POJO 类都必须需要带有 Hibernate 的 Default Constructor,所以添加 User.java 文件中的默认构造函数
2) 更改表单操作值为<form action="UserDao" method="post">
3) 将方法名改成UserDao.java文件public static void
main(String[] arg)
4) 删除这一行 i=(Integer)session.save(u)
并替换为
以下代码
`
User u = new User();
u.setName("abc");
u.setEmail("abc@abc.com");
session.save(u); `
【讨论】:
以上是关于使用 Hibernate 和 JSP 创建表和数据未保存的主要内容,如果未能解决你的问题,请参考以下文章
使用maven和myeclipse配置hibernate以及基本的入门程序
如何将表与中间表和附加相关列spring hibernate mvc连接起来