Hibernate之openSession與getCurrentSession的區別
openSession 與 getCurrentSession的區別
(1)openSession 每一次獲得的是一個全新的session物件,而getCurrentSession獲得的是與當前執行緒繫結的session物件;
(2)openSession不需要配置,而getCurrentSession需要配置
thread
(3)openSession需要手動關閉,而getCurrentSession系統自動關閉
openSession出來的session要通過:session.close(),
而getSessionCurrent出來的session系統自動關閉,如果自己關閉會報錯
(4)Session是執行緒不同步的,要保證執行緒安全就要使用getCurrentSession
下面這段程式碼執行後可比較它們的(1)
package cn.blog.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Test {
//openSession與getCurrentSession對比
public static void main(String[] args) {
Configuration configuration = new Configuration().configure();
SessionFactory sf = configuration.buildSessionFactory();
Session sessionOpen1 = sf.openSession();
Session sessionOpen2 = sf.openSession();
Session sessionThread1 = sf.getCurrentSession();
Session sessionThread2 = sf.getCurrentSession();
System.out.println(sessionOpen1.hashCode() + "<-------->" + sessionOpen2.hashCode()); //每次建立都是新的session物件
System.out.println(sessionThread1.hashCode() + "<-------->" + sessionThread2.hashCode()); //每次獲得的是當前session
}
}
相關文章
- mybatis與hibernate的區別MyBatis
- Oracle與OpenJDK之間的區別OracleJDK
- GCD與NSOperation之間的區別GC
- Java之String的equals與contentEquals區別Java
- python學習之isinstance與type的區別Python
- 雲與本地部署 ERP 之間的區別
- ??與?:的區別
- Hibernate之SchemaExport的使用Export
- Java中Statement與PreparedStatement與CallableStatement之間的區別 - javarevisitedJava
- 陣列地址與指標之間的區別與聯絡陣列指標
- 簡單介紹HTTP與HTTPS之間的區別HTTP
- Hibernate中的cascade與inverse
- mybatis入門程式:刪除、更新使用者&&hibernate和mybatis的區別MyBatis
- 淺析HTML、CSS、JavaScript之間的聯絡與區別!HTMLCSSJavaScript
- Python入門之迭代器與生成器的區別Python
- const與static的區別
- HTTP 與 HTTPS 的區別HTTP
- getAttribute() 與 attr() 的區別
- @import與<link> 的區別Import
- Postgresql與MySQL的區別MySql
- HashSet與HashMap的區別HashMap
- HashTable與ConcurrentHashMap的區別HashMap
- maven與ant的區別Maven
- __new()__ 與 __init()__的區別
- @Autowired 與@Resource的區別
- gulp與webpack的區別Web
- free 與 CFRelease 的區別
- post與get的區別
- Git與GitHub的區別Github
- Comparable與Comparator的區別
- volatile與synchronized的區別synchronized
- Javascript中“==”與“===”的區別JavaScript
- ICMP與IGMP的區別
- UDP與TCP的區別UDPTCP
- WebApp與NativeApp的區別WebAPP
- mysql與Oracle的區別MySqlOracle
- Synchronized 與 ReentrantLock 的區別synchronizedReentrantLock
- let與var的區別