【发布时间】:2013-08-26 18:43:06
【问题描述】:
我即将开始创建一个新应用程序,并希望就我计划使用的方法获得一些反馈。我们将使用 spring 和 spring data jpa。
控制器可以调用域服务和存储库,还是应该只调用应用程序和基础设施服务?
如果“可以”从控制器调用域服务和存储库并且域服务操作需要事务,我可以/应该将@Transactional 注释放在域服务方法上吗?或者我应该有一个包装调用的应用程序服务(不确定我是否喜欢这种方法,因为你最终会得到一堆传递方法)?
如果不能从控制器调用域服务和存储库,我是否需要创建应用程序服务来包装所有可能的域服务调用(就像我在 2 中所说的那样,这可能是很多传递方法)?
我能想到的最佳解决方案如下:
存储库将具有 @Transactional 注释,在写入数据库时传播 REQUIRED,传播设置为 readOnly=true,从数据库读取时传播设置为 SUPPORTS。
应用程序和域服务将根据需要添加@Transactional 注释
如果控制器需要直接调用存储库、域服务或应用程序服务,它可以。没有通过。
【问题讨论】:
标签: spring jpa transactions transactional