Java 使用hibernate在数据库中插入而不生成事务实例
我一直在做一个简单的程序,使用hibernate框架在mysql中保存员工详细信息,如下所示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); }
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进行非事务性工作):