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
- 雲與本地部署 ERP 之間的區別
- python學習之isinstance與type的區別Python
- ??與?:的區別
- Hibernate之SchemaExport的使用Export
- Java中Statement與PreparedStatement與CallableStatement之間的區別 - javarevisitedJava
- 陣列地址與指標之間的區別與聯絡陣列指標
- 簡單介紹HTTP與HTTPS之間的區別HTTP
- Hibernate中的cascade與inverse
- mybatis入門程式:刪除、更新使用者&&hibernate和mybatis的區別MyBatis
- 淺析HTML、CSS、JavaScript之間的聯絡與區別!HTMLCSSJavaScript
- Python入門之迭代器與生成器的區別Python
- Filter 與 Servlet 的區別FilterServlet
- session與cookie的區別SessionCookie
- @Valid 與 @Validated 的區別
- Eureka與Zookeeper的區別
- async與defer的區別
- print 與 println 的區別
- buffer與cache的區別
- grid 與 treelist 的區別
- Python中 ‘==‘ 與‘is‘的區別Python
- http與https的區別HTTP
- GET 與 POST 的區別
- TCP與UDP的區別TCPUDP
- int與Integer的區別
- Mysql與mongodb的區別MySqlMongoDB
- kill與pkill的區別
- HTML與XHTML的區別HTML
- CentOS 與 Ubuntu 的區別CentOSUbuntu
- artice與section的區別
- chown與chmod的區別
- synchronized與ReentrantLock的區別synchronizedReentrantLock
- LESS與SASS的區別
- synchronized與Lock的區別synchronized
- typedef與define的區別