JPA commit() after persist() :是否需要
JPA commit() after persist() : Required or Not
我正在做一个 JPA 2.0 项目,我在其中保存我的 Entity
class 对象,例如 :-
InitialContext ctx = new InitialContext();
UserTransaction userTrans = (UserTransaction)
ctx.lookup("java:comp/UserTransaction");
EntityManagerFactory emf = Persistence.createEntityManagerFactory(PERSISTENCE_NAME);
EntityManager em = emf.createEntityManager();
User user = new User("ankit","nigam",25);
em.persist(user); // persisted in db after this executes
userTrans.commit(); // whether it is required OR not.
因此,无论我是否使用 userTrans.commit()
,我的 user
对象都会在 persist()
执行后保存在 Db 中。但是我的一些同事说,作为一个标准,我们应该 commit()
交易。
我应该遵循什么方法,commit()
和 persist()
背后的逻辑是什么。请点灯。
您的数据库中是否启用了自动提交?如果是,那么这就是无论您是否从您的应用程序提交事务,更改都会永久存储在您的数据库中的原因。在生产中,自动提交通常设置为 OFF,因为它会妨碍数据库的 performance/response 时间,这就是为什么通常鼓励开发人员从他们的应用程序控制事务的提交或回滚。 link 详细说明了在 db2 中处理自动提交的命令:http://www.db2util.com/administration/options-db2-command-line-disable-autocommit/
我正在做一个 JPA 2.0 项目,我在其中保存我的 Entity
class 对象,例如 :-
InitialContext ctx = new InitialContext();
UserTransaction userTrans = (UserTransaction)
ctx.lookup("java:comp/UserTransaction");
EntityManagerFactory emf = Persistence.createEntityManagerFactory(PERSISTENCE_NAME);
EntityManager em = emf.createEntityManager();
User user = new User("ankit","nigam",25);
em.persist(user); // persisted in db after this executes
userTrans.commit(); // whether it is required OR not.
因此,无论我是否使用 userTrans.commit()
,我的 user
对象都会在 persist()
执行后保存在 Db 中。但是我的一些同事说,作为一个标准,我们应该 commit()
交易。
我应该遵循什么方法,commit()
和 persist()
背后的逻辑是什么。请点灯。
您的数据库中是否启用了自动提交?如果是,那么这就是无论您是否从您的应用程序提交事务,更改都会永久存储在您的数据库中的原因。在生产中,自动提交通常设置为 OFF,因为它会妨碍数据库的 performance/response 时间,这就是为什么通常鼓励开发人员从他们的应用程序控制事务的提交或回滚。 link 详细说明了在 db2 中处理自动提交的命令:http://www.db2util.com/administration/options-db2-command-line-disable-autocommit/