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

2014-11-24 09:45:15 · 作者: · 浏览: 1

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


问题: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","");


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