Hibernate ---Transaction 事務
阿新 • • 發佈:2018-11-08
package com.itheima.b_api;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;
import com.itheima.a_hello.User;
//詳解Transaction物件
public class Transaction_test {
@Test
//Transaction 封裝了事務的操作
//開啟事務
//提交事務
//回滾事務
public void fun1(){
//1載入配置
Configuration conf = new Configuration().configure();
//2 根據Configuration 配置資訊建立 SessionFactory
SessionFactory sf = conf.buildSessionFactory();
//3 獲得session
Session session = sf.openSession();
//-------------------------------
//開啟事務
Transaction ts = session.beginTransaction();
//獲得已經開啟的事務物件(很少用)
session.getTransaction();
//Transaction 控制如何關閉事務
//提交
ts.commit();
//回滾
ts.rollback();
//-------------------------------
session.close();
sf.close();
}
//事務的細節
@Test
public void fun2(){
//1載入配置
Configuration conf = new Configuration().configure();
//2 根據Configuration 配置資訊建立 SessionFactory
SessionFactory sf = conf.buildSessionFactory();
//3 獲得與當前執行緒繫結的session
Session session = sf.getCurrentSession();
//-------------------------------
//事務關閉時,會自動把與當前執行緒關聯的session關閉,並刪除
session.beginTransaction().commit();
//在獲得當前執行緒繫結的session時. 獲得的是新的session
Session session2 = sf.getCurrentSession();
System.out.println(session==session2);//false
//-------------------------------
session.close();
sf.close();
}
}