Hibernate 中save方法运行成功之后却没有保存进数据库的原因

刚刚使用myeclipse的Hibernate 反向工程生成的dao文件的save方法不能入库

 

1.首先很多时候我们把id设置为自动增长的,而反向工程生成的类中并没有设置申明该字段为自增,可以对这个字段前面做如下设置:

 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 @Column(name = "id", unique = true, nullable = false)

 

2.JDBC默认的是自动提交
而Hibernian默认的是手动提交,必须beginTransaction开启事务,手动提交,然后commit否则数据库中没有保存的记录:
eg:
        EntityManagerHelper.beginTransaction();
        playersDAO.save(players);
        EntityManagerHelper.commit();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个简单的 Hibernate 实例: 首先,我们需要建立一个数据库表来存储学生的信息。在本例,我们将创建一个名为“students”的表,其包含“id”、“name”和“age”列。 CREATE TABLE students ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(50) NOT NULL, age int(11) NOT NULL, PRIMARY KEY (id) ); 接下来,我们需要创建一个 Java 类来表示学生。在本例,我们将创建一个名为“Student”的类,其包含“id”、“name”和“age”属性。 public class Student { private int id; private String name; private int age; public Student() {} public Student(String name, int age) { this.name = name; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", age=" + age + "]"; } } 接下来,我们需要创建一个 Hibernate 配置文件来指定数据库连接和映射信息。在本例,我们将创建一个名为“hibernate.cfg.xml”的配置文件。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">password</property> <property name="hibernate.show_sql">true</property> <mapping class="Student"/> </session-factory> </hibernate-configuration> 最后,我们可以编写一个简单的测试程序来测试 Hibernate 的基本功能。在本例,我们将创建一个名为“Main”的类,该类将创建一个学生对象并将其保存数据库。 public class Main { public static void main(String[] args) { Configuration config = new Configuration().configure(); SessionFactory sessionFactory = config.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction tx = null; try { tx = session.beginTransaction(); Student student = new Student("Tom", 20); session.save(student); tx.commit(); } catch (Exception e) { if (tx != null) { tx.rollback(); } e.printStackTrace(); } finally { session.close(); sessionFactory.close(); } } } 运行该程序后,我们可以在数据库看到一个名为“Tom”的学生记录已被插入到“students”表

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值