Hibernate 使用beginTransaction()和commit()编写方法与不使用beginTransaction()和commit()编写方法的区别

Hibernate 使用beginTransaction()和commit()编写方法与不使用beginTransaction()和commit()编写方法的区别,hibernate,Hibernate,这两段代码之间的区别是什么?基本上,我对这两段代码有一些混淆,在第一段代码中,我通过开始事务并提交它来执行操作create,在第二段代码中,我没有编写session.beginTransaction()和tx.commit()哪种方法是最好的,为什么 还有一个问题是select query是否也被视为事务?或者事务是一个工作单元中的一系列多个操作,如创建、更新和删除 public boolean createProject(EmployeeProject employeeProject) {

这两段代码之间的区别是什么?基本上,我对这两段代码有一些混淆,在第一段代码中,我通过开始事务并提交它来执行操作
create
,在第二段代码中,我没有编写
session.beginTransaction()和tx.commit()
哪种方法是最好的,为什么

还有一个问题是
select query
是否也被视为事务?或者事务是一个工作单元中的一系列多个操作,如创建、更新和删除

public boolean createProject(EmployeeProject employeeProject) {
        Transaction tx = null;
        boolean flag = false;
        try {
            tx = session.beginTransaction();
            session.save(employeeProject);
            tx.commit();
            flag = true;
        } catch (HibernateException e) {
            if (tx != null)
                tx.rollback();

        }
        return flag;
    }
第二种方法

public boolean createProject(EmployeeProject employeeProject) {
        boolean flag ;
        try {
            session.save(employeeProject);
            flag = true;
        } catch (HibernateException e) {
            flag=false;

        }
        return flag;
    }
根据定义:

事务与会话相关联,通常被实例化 通过调用Session.beginTransaction()。单个会话可能跨越 自会话(会话)概念以来的多个事务 在应用程序和数据存储之间)具有更粗的粒度 而不是交易的概念。然而,其目的是: 最多只能是一个与特定事务关联的未提交事务 任何时候都可以

由于您正在执行写入操作(insert update delete),因此无法使用第二种方法将对象持久化到db中。要在数据库中持久化一个对象,您必须开始一个事务并提交它


第二种方法仅适用于读取操作(例如,选择查询)。

因此我不需要在读取中使用session.beginTransaction,但在写入中确实需要session.beginTransaction,对吗