hibernate 在Spring Data JPA中使用@ transmitting annotation的层

mcdcgff0  于 2023-10-23  发布在  Spring
关注(0)|答案(2)|浏览(128)

我正在为我的应用程序使用Spring Data JPA,它有以下几层:
1.服务层,带接口和实现(带注解的@service)
1.CRUD repository layerwith Spring Data JPA,以及自定义repository implementations
1.实体层
我想知道把@Transactional放在哪里才是正确的。目前,我在服务层中使用了它,在那里使用了存储库。

h7appiyu

h7appiyu1#

事务属于服务层。例如,如果你有HotelService,那么代码看起来像这样:

@Service("hotelService")
@Transactional
public class HotelServiceImpl implements HotelService {
    @Autowired
    HotelDao hotelDao;

    // The rest of code omited ...
}
ztyzrc3y

ztyzrc3y2#

如果你想在你的代码中添加一个transactional行为的话,正确的@Transactional注解应该放在 any 层。假定使用数据库访问的代码。通常,您可以在存储库上使用@Transactional。但是如果你需要的话,你也可以把它添加到服务层。
了解Spring框架的声明性事务实现
您可以将@Transactional注解放在接口定义、接口上的方法、类定义或类上的公共方法之前。但是,仅仅存在@Transactional注解还不足以激活事务行为。@Transactional注解只是一种元数据,可以由某些@Transactional感知的运行时基础设施使用,并且可以使用元数据配置具有事务行为的适当bean。

相关问题