【问题标题】:Should controllers in Spring MVC app always work only with detached objects?Spring MVC 应用程序中的控制器是否应该始终仅与分离的对象一起使用?
【发布时间】:2013-09-19 13:02:54
【问题描述】:

使用 JPA 分离对象在 Spring MVC 应用程序的控制器和视图中工作是一种好习惯吗?

如果是,那么延迟初始化的唯一好处是在单个 DAO 调用的范围内 - 我是对的吗? 此外,由于许多操作没有分布在多个控制器中(因为所有数据操作必须在单个 dao-transactional-call 中执行)如何将 DAO 操作拆分为更多类?创建专门的,仅与实体 DAO 相关的?

是否可以在控制器方法调用上跨越事务,而不是单个 DAO 调用?这会是一种不好的做法吗?

【问题讨论】:

    标签: java hibernate spring-mvc jpa dao


    【解决方案1】:

    事务应该在您的服务层类中,有时在您的 daos/存储库中。但绝对不在您的控制器上。

    你有两个 dao 调用,你想要一个事务?这正是服务类的用途。

    【讨论】:

    • 所以我假设:从控制器调用的具有 2 个注入 DAO 的服务类。最后的小问题:如何注释服务?它像 DAO 一样被注入到控制器中?
    • 是的,并在服务类上使用@Service注解,然后可以自动装配等。
    • 另外,很多人(不是我)说你永远不应该将 dao 直接注入控制器,它们应该始终通过服务访问。而且交易只进行一项服务而不是 dao 的(但它值得商榷)。
    • 如果我有复杂的服务方法来检索结果(我已经必须在惰性/完整初始化之间做出决定),但在多个上下文中使用它:需要完整数据和仅基本数据-必需(懒惰) - 我被分离的对象困住了,而且我不应该克隆服务逻辑只是为了添加连接/一些初始化/获取类型设置(不要重复自己)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    相关资源
    最近更新 更多