相关疑难解决方法(0)

@Transactional注释在哪里?

你应该把它@Transactional放在DAO类和/或它们的方法中,还是更好地注释使用DAO对象调用的Service类?或者注释两个"层​​"是否有意义?

java spring annotations dao transactions

504
推荐指数
16
解决办法
23万
查看次数

"@Transactional"应放在哪里放置服务层或DAO

首先,我可能会问一些之前被问过和回答的问题,但我无法获得搜索结果.好的一般(或总是到目前为止:))我们通常在服务层上定义事务注释典型的spring hibernate crud

控制器 - >经理 - >道 - >奥姆.

我现在有一种情况需要在基于客户端站点的域模型之间进行选择.假设客户端A使用我的域模型一切都很好但是其他客户端站点会给我一个Web服务而不是使用我们的域模型.

我应该替换哪一层.我相信它必须是Dao,它将从Web服务中获取数据并将其发送回来.两个单独编写的Dao图层并根据场景插入.

我现在已经意识到,当我们在服务层中放置@Transactional时,我们一直在进行紧耦合(如果有这样的事情或说没有松耦合).这么多大脑不会错,或者是他们(我对此表示怀疑).

所以问题是"应该在哪里"@Transactional"放置服务层或DAO?" 是服务层向下我应该更换.

spring dao transactions

77
推荐指数
3
解决办法
4万
查看次数

我们应该在哪里使用@Transactional以及Service层在哪里?

我在Spring有休息风格控制器.在控制器中我注入了dao接口.从控制器我坚持数据.换句话说,我喜欢REST Web服务.人们发给我数据,我坚持下去.

/**
 * Payment rest controller which receives 
 * JSON of data
 */
@Controller
@RequestMapping("/data")
public class PaymentTransaction {

    @Autowired
    private TestDao dao;

    @RequestMapping(value = "/test", method = RequestMethod.POST)
    @ResponseBody()
    public String test(HttpServletRequest request) {

    ...

    }
Run Code Online (Sandbox Code Playgroud)

目前我在Dao类中有@transaction注释.例如:

    import org.springframework.transaction.annotation.Transactional;
    @Component
    @Transactional
    public interface TestDao {

        @Transactional(propagation = Propagation.REQUIRED)
        public void first();

    }
Run Code Online (Sandbox Code Playgroud)

我读过这是非常糟糕的风格.在stackoverflow上使用这个答案,这里有解释和示例为什么这很糟糕 - 我们不能在DAO和控制器中添加这个注释.我们必须在服务层添加它.

但我不明白什么是服务层?或者在哪里?我没有这样的东西.我应该在哪里写@Transactional注释?

最好的祝福,

spring jpa spring-mvc

3
推荐指数
1
解决办法
3437
查看次数

标签 统计

spring ×3

dao ×2

transactions ×2

annotations ×1

java ×1

jpa ×1

spring-mvc ×1