Java 使用hibernate在数据库中插入而不生成事务实例

Java 使用hibernate在数据库中插入而不生成事务实例,java,mysql,hibernate,Java,Mysql,Hibernate,我一直在做一个简单的程序,使用hibernate框架在mysql中保存员工详细信息,如下所示 public class Manifest { Session session; public static void main(String[] args) { Employee employee = new Employee("varun"); new Manifest().addEmployee(employee); }

我一直在做一个简单的程序,使用hibernate框架在mysql中保存员工详细信息,如下所示

public class Manifest {

     Session session;

     public static void main(String[] args) {
         Employee employee = new Employee("varun");
         new Manifest().addEmployee(employee); 
     }

     /* Method to CREATE an employee in the database */
     public void addEmployee(Employee employee){

          Integer employeeID=null;
          SessionGenerator sessionGenerator = new SessionGenerator();
          try{
            session = sessionGenerator.getSessionToDb();
            employeeID = (Integer) session.save(employee);
            System.out.println(employeeId); 
          }catch (HibernateException e) {
                 e.printStackTrace(); 
          }finally {
                 session.close(); 
          } 
     }  
}
我知道我应该使用
session.beginTransaction()
&
tx.commit()
但我的问题是,为什么在我的案例中没有抛出异常,它在控制台上打印employeeId,但不在数据库中创建任何条目。。这背后的原因是什么?

1)Session.save()可能会在事务边界之外执行插入:save()方法返回一个标识符,如果必须执行插入以获取标识符(例如“identity”生成器),则该插入会立即发生(以获取标识),无论您是在交易内部还是外部

2) 如果设置了以下各项,即使没有事务,也可能发生提交:

<property name="connection.autocommit">true</property>
true
这就是为什么没有提出异常

查看本文(使用Hibernate进行非事务性工作):