【问题标题】:@Transactional on a JpaRepositoryJpaRepository 上的@Transactional
【发布时间】:2014-04-07 16:05:44
【问题描述】:

我正在使用只读数据库将一些数据输入到我的项目中。我们使用 Spring v3 和 jpa 和 hibernate

以下注释是否会使对我的存储库的所有调用成为只读事务?或者我是否需要在调用存储库的服务层上进行注释

package com.blah.jpa;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional;

@Transactional(readOnly = true)
public interface ServiceToServerRepository extends JpaRepository<ServiceToServerJPA, String> {

}

所以我们免费获得了所有的 findOne,findAll。但是任何更新都应该失败,因为它是一个只读事务

【问题讨论】:

    标签: java spring hibernate jpa


    【解决方案1】:

    这基本上应该做到。但我通常选择使用 Transactional 注释标记服务层工件。无论如何,请查看这篇文章以获取更多关于使用事务性和 Spring Data 的信息:How to use @Transactional with Spring Data?

    【讨论】:

      【解决方案2】:

      readOnly 标志仅暗示在调用方法时使用只读事务就足够了。

      如果您的服务层有一个非只读的嵌套事务,那么它将使用该事务,您将有效地忽略此注释。

      【讨论】:

        猜你喜欢
        • 2021-12-15
        • 2017-08-12
        • 2014-03-01
        • 2013-09-21
        • 2017-02-23
        • 2013-06-25
        • 1970-01-01
        • 2021-12-21
        相关资源
        最近更新 更多