Hibernate API詳解
hibernate體系結構
PO:persistent Object 持久對象,javabean+hbm.xml,習慣稱呼為PO類
Configuration
Configuration hibernate 提供用於存放所有配置信息對象
構造方法
new Configuration(),加載配置文件,hibernate.properties文件。但一般情況沒有編寫。
參考的配置文件:%h%project/etc/hibernate.properties
api
config.configure(),加載src下hibernate.xml文件
config.configure(String path) path指定核心配置文件的位置
例如:conifgure("/cn/util/abc.cfg.xml")
加載映射文件
通常將映射文件配置hibernate.cfg.xml<mapping resource="cn/util/.../User.hbm.xml">
config.addClass(*.class) 將在class對象同級目錄下,同名的hbm.xml文件
例如:config.addClass(Book.class),加載Book類,所在的包下面的Book.hbm.xml文件
config.addResource(String hbm)將指定映射文件xml加載內存,此時文件名稱任意,不建議任意
SessionFactory
sessionFactory 用於提供session,相當於連接池,通過Configuration加載hibernate.cfg.xml創建對象
獲得對象:config.builderSessionFactory()
SessionFactory是線程安全的。目的是每一個線程獲得的session都是不同的,不存在線程並發問題
session獲得:
創建一個新的session:factory.openSession();
將session綁定本地線程中,在一個線程共享session:factory.getCurrentSession();(之後使用)
工具類
package cn.hibernate.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class H3Utils {
//方式1
//private static SessionFactory factory2 = new Configuration().configure().buildSessionFactory();
//方式2
//創建一個工廠
private static Configuration configuration;
private static SessionFactory factory;
static{
configuration = new Configuration().configure();
factory = configuration.buildSessionFactory();
}
public static Session openSession(){
return factory.openSession();
}
}
Session接口
session :服務器 與 數據庫之間會話,相當於 Connection
session單線程,存在線程並發問題,線程不安全。
註意:session必須關閉,session.close();
Transaction
開啟事物:session.beginTransaction();
提交事物:session.commit();
回滾事物:session.rollback();
@Test
public void demo01(){
//01.獲取session
Session session = H3Utils.openSession();
Transaction transaction = null;
try {
//#1開啟事物
transaction = session.beginTransaction();
//操作:。。。。
//#2提交
transaction.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
if(transaction != null){
//#3回滾
transaction.rollback();
}
e.printStackTrace();
}
}
Hibernate API詳解