欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【hibernate】问题:hibernate无法持久化数据

程序员文章站 2022-03-26 10:39:16
...

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

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

解决:检查一下两个方面

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

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

相关标签: hibernate hsqldb