【hibernate】问题:hibernate无法持久化数据
现象: 程序执行正确,但数据库没有已经执行成功的插入数据
问题: 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","");
使用该模式,无需断开连接,当对数据进行修改后,很快会被持久化,但也正因为此,使用该配置性能稍差些。
上一篇: Oracle游标的用法
下一篇: 广搜(BFS)和深搜(DFS)
推荐阅读
-
Hibernate持久化类的原则
-
Hibernate持久化对象的状态
-
oracle数据库查询没问题,正常显示两个汉字;但是java后台Hibernate查询的时候只显示第一个汉字怎么解决?
-
hibernate框架(三)持久化类&主键生成策略
-
详解vuex持久化插件解决浏览器刷新数据消失问题
-
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
-
持久化保存vuex数据-解决页面刷新后丢失vuex数据的问题
-
Redis开启AOF持久化数据丢失问题
-
重启redis服务数据丢失的问题(rdb与aof持久化策略)
-
请教Hibernate操作oracle数据库产生随机数问题 HibernateOracleSQLORM