gpt4 book ai didi

java - 直接从 Spring @Service Bean 使用 EntityManager 有什么缺点吗?

转载 作者:行者123 更新时间:2023-12-03 23:14:46 25 4
gpt4 key购买 nike

直接从 Spring 服务 bean 而不是 @Repository bean 使用实体管理器有什么缺点吗

@Service
public class SomeService {
@PersistenceContext EntityManager em;

@Transactional(....)
public void doSomething(....)
{
// use entity manager here
}
}

对比

@Repository
public class SomeRepository {
@PersistenceContext EntityManager em;

public void doSomething(....)
{
// use entity manager here
}
}

最佳答案

这是永恒的争论之一,但它归结为您希望坚持的风格。在 JEE6 世界中,问题的措辞是:“我们应该制作单独的 EJB 来充当 DAO,还是只在我们的服务中使用 EntityManager”)。我喜欢 Adam Bien 的“真实世界 Java EE 模式”中的经验法则:如果您发现自己制作的服务只是委托(delegate)给存储库,那么可以为自己节省一些复杂性,省去中间人,只使用服务中的 EntityManager。有人可能会争辩说 EntityManager 是一种存储库。

至于可能的疑惑:

  • EM 永远不会抛出 SQLException(或任何已检查的异常),因此您可能不需要 @Repository 为您提供的翻译,
  • 如果您想重用其他地方的功能,只需使用该服务,它与存储库一样可注入(inject),

风格很重要,总是将 daos 与服务分开的人当然有道理。但你不能真正称一种风格为“正确”或“不正确”,它更多地属于“我喜欢”或“我不喜欢”的范畴。

关于java - 直接从 Spring @Service Bean 使用 EntityManager 有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12002232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com