3.4.5.4. 事务参数
事务超时
可以为创建的事务设置超时时限(以秒为单位)。如果发生超时,事务将被中断并回滚。事务超时设置可以有效地限制数据库请求的最大持续时间。
以编程方式管理事务时,通过传递给 Persistence.createTransaction()
方法的参数 TransactionParams
对象来指定超时。例如:
Transaction tx = persistence.createTransaction(new TransactionParams().setTimeout(2));
在声明式事务管理的情况下,使用 @Transactional
注解的 timeout
参数:
@Transactional(timeout = 2)
public void someServiceMethod() {
...
可以使用cuba.defaultQueryTimeoutSec应用程序属性定义默认超时时限。
只读事务
如果事务仅用于从数据库读取数据,则可以将事务标记为只读。例如,DataManager的所有 load
方法默认使用只读事务。只读事务会有更好的性能,因为平台不执行处理可能修改实体的代码。BeforeCommit
事务监听器也不会被调用。
如果只读事务的持久化上下文包含已修改的实体,则在提交事务时将抛出 |
以编程方式管理事务时,通过将 TransactionParams
对象传递给 Persistence.createTransaction()
方法来指定只读标识。例如:
Transaction tx = persistence.createTransaction(new TransactionParams().setReadOnly(true));
在声明式事务管理的情况下,使用 @Transactional
注解的 readOnly
参数:
@Transactional(readOnly = true)
public void someServiceMethod() {
...