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