使用 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) 更改表单操作值为&lt;form action="UserDao" method="post"&gt;

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以及基本的入门程序

Hibernate给表和字段设置前后缀及分隔符

如何将表与中间表和附加相关列spring hibernate mvc连接起来

如何不使用 Hibernate Envers 审计连接表和相关实体?

Nhibernate/Hibernate、查找表和对象设计

Nhibernate/Hibernate、查找表和对象设计