使用Hibernate进行无事务处理

时间:2009-02-13 21:01:57

标签: hibernate transactions

有没有办法选择Hibernate用事务包装的更新?受到eBay尽可能无交易的驱动力的启发,我知道我的应用程序中的许多更新都不需要是ACID写入。例如,有一个更新,其中包含用户标识和另一个表的标识。只有一个用户可以插入此记录,我知道它不需要是一个事务。那么,如何禁用这一个插入的事务,或者插入这一个表?

编辑:

好吧,鉴于我的底层数据库是mysql - 看起来我必须在逐个表的基础上进行选择。任何不需要事务的表都可以设置为myisam而不是innodb。啊,好吧,不是我要找的答案。

2 个答案:

答案 0 :(得分:1)

请参阅:Hibernate Tx Documentation

一般的答案取决于你如何调用hibernate。上面的文档准确地解释了如何通过Hibernate API来控制事务边界。

答案 1 :(得分:0)

我不知道任何关于Hibernate的事情,但我的想法是:

如果你没有明确地BEGIN TRANSACTION / COMMIT那么它会做它的东西(除非你打开了隐式交易)。

如果每页只有一个INSERT / UPDATE(工作单元),那么该页面本身就是ACID,所以无论你是否开始显式交易都不重要。

然而,一个限定整个页面数据库事务的隐式事务将确保如果您将来添加某些内容,忘记该页面没有隐式事务,那么您将自己保存自己!