一:SessionFactory的用途:
1.負責創建Session對象,可以通過Configuration對象創建SessionFactory
2.SessionFactory對象中保存了當前的數據庫配置信息和所有的映射關係以及預定義的Sql語句,同時SessionFactoy還負責維護Hibernate的二級緩存
3.SessionFactory對象的創建會有較大的開銷,而且SessionFactory對象採取了線程安全的設計方式,因此在實際中SessionFactory對象可以儘量的共享,在大多數情況下,一個應用中針對一個數據庫可以共享一個SessionFactory
創建SessionFactory的方式:
Configuration config=new Configuration().configure();
SessionFactory factory=config.buildSessionFactory();
二:Session的用途:
1.定義了添加、更新、刪除、和查詢等操作,是持久化操作的基礎,Session的設計是非線程安全的,因此,一個Session對象只可以由一個線程使用
Session對象可以由SessionFactory對象創建
Configuration config=new Configuration().configure();
SessionFactory factory=config.buildSessionFactory();
Session session=factory.openSession();
三:Transaction的用途:
將應用代碼從底層的事務實現中抽象出來—這可能是一個JDBC事務,一個JTA用戶事務或者甚至是一個公共對象請求代理結構(CORBA)-允許應用通過一組一直的ApI控制事務邊界
使用Hibernate進行操作時(增、刪、改)必須顯示的調用Transaction(默認:autoCommit=false)
開啓方式:
Transaction tx=session.beginTransaction();