簡體   English   中英

在Hibernate中禁用隱式事務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM