Hibernate无法持久化数据到数据库


现象:程序执行正确,但数据库没有已经执行成功的插入数据

问题:Hibernate无法持久化数据到数据库

解决:检查一下两个方面

1、不要多次new  SessionFactory

SessionFactory是个工厂,要一个会话找工厂要一个,不必每次都新建工厂

session接口

一般的持久化方法(CRUD)都是通过Session来调用的,Session是非线程安全的。

Session是一个轻量级对象,通常将每个Session实例和一个数据库事务绑定,也就是每执行一个数据库事务,都应该先创建一个新的Session实例,在使用Session后,还需要关闭Session。

创建Session:Session session=sessionFactory.openSession();

关闭Session:session.close();

SessionFactory 接口

这里用到了一个设计模式――工厂模式,用户程序从工厂类SessionFactory中取得Session的实例。

SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

2、hibernate.cfg.xml中:hsqldb.write_delay=false

connection=DriverManager.getConnection("jdbc:hsqldb:file:feng;hsqldb.write_delay=false;","SA","");

使用该模式,无需断开连接,当对数据进行修改后,很快会被持久化,但也正因为此,使用该配置性能稍差些。

相关内容