歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

使用該模式,無需斷開連接,當對數據進行修改後,很快會被持久化,但也正因為此,使用該配置性能稍差些。

Copyright © Linux教程網 All Rights Reserved