[英]Disabling implicit transactions in Hibernate
我是休眠的新手,並且編寫了以下代碼,
package main;
import java.util.List;
import model.Message;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.stat.Statistics;
public class Main {
public static void main(String[] args) throws Exception {
Configuration configuration = new Configuration().configure();
SessionFactory factory = configuration.buildSessionFactory();
Session session = factory.openSession();
//Transaction transaction = session.beginTransaction();
List<Message> messages = session.createQuery("from Message").list();
Message message = new Message();
message.setMessage("Hello World");
session.save(message);
System.out.println(messages);
System.out.println(session);
session.close();
factory.close();
System.out.println("After the closure");
}
}
在這里,我還沒有開始交易,並且我已經關閉了會話。 但是Hibernate沒有抱怨事務。 是否存在隱式事務,如果是的話我應該如何禁用它們。
Hibernate沒有理由抱怨事務。 :)
完成工作后,您關閉了會話。 但是,您不應為每個數據庫編輯創建一個新的sessionFactory:
SessionFactory是一個創建成本很高的線程安全對象,旨在由所有應用程序線程共享。 通常在應用程序啟動時從Configuration實例創建一次。
會話是一種廉價的,非線程安全的對象,應僅使用一次,然后丟棄以用於:單個請求,對話或單個工作單元。 除非需要,否則會話將不會獲得JDBC連接或數據源。 除非使用,否則不會消耗任何資源。
在此處閱讀有關Hibernate事務管理的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.