繁体   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