相关疑难解决方法(0)

如何在Spring Data中使用@Transactional?

我刚刚开始研究Spring-data,Hibernate,MySQL,JPA项目.我切换到spring-data,这样我就不用担心手工创建查询了.

我注意到@Transactional当你使用spring-data时不需要使用,因为我也在没有注释的情况下尝试了我的查询.

我应该/不应该使用@Transactional注释的具体原因是什么?

作品:

@Transactional
public List listStudentsBySchool(long id) {
    return repository.findByClasses_School_Id(id);
}
Run Code Online (Sandbox Code Playgroud)

还有效:

public List listStudentsBySchool(long id) {
    return repository.findByClasses_School_Id(id);
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

java spring jpa spring-data spring-data-jpa

68
推荐指数
1
解决办法
7万
查看次数

Spring @Transactional只读传播

我正在尝试使用命令模式来允许我的Web层在单个事务的上下文中使用Hibernate实体(从而避免延迟加载异常).但是,我现在对如何处理交易感到困惑.

我的命令调用使用@Transactional注释注释的服务层方法.这些服务层方法中的@Transactional(readOnly=true)一些是只读的- 例如- 并且一些是读/写的.

我的服务层公开了一个命令处理程序,它执行代表Web层传递给它的命令.

@Transactional
public Command handle( Command cmd ) throws CommandException
Run Code Online (Sandbox Code Playgroud)

我假设我正确地使命令处理程序的handle()方法成为事务性的.这就是混乱的来源.如果命令的实现调用多个服务层方法,命令处理程序无法知道命令中调用的操作是只读,读/写还是组合两个.

我不明白传播在这个例子中是如何工作的.如果我要创建该handle()方法readOnly=true,那么如果该命令随后调用带有注释的服务层方法会发生什么@Transactional(realOnly=false)

我希望更好地理解这一点并欢迎您的评论......

安德鲁

spring transactions

57
推荐指数
4
解决办法
11万
查看次数

标签 统计

spring ×2

java ×1

jpa ×1

spring-data ×1

spring-data-jpa ×1

transactions ×1