gpt4 book ai didi

java - 在 Spring 中延迟加载 DTO 字段

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:11:55 25 4
gpt4 key购买 nike

我有一个使用 Spring 的项目,它被分解成几十个 DAO 和关联的 DTO。我使用的是 JdbcTemplate,但没用太多,因为它正是我满意的抽象级别。

我目前正在我的 DTO 上执行延迟加载,方法是在它们的 getter 中放置一些相当复杂的代码。

基本样板逻辑是:1.如果字段不为空返回它的值并退出2. 联系适当的 DAO 并获取相关的 DTO3. 保存到下次使用。

除了我的低级 DTO 与一大堆 DAO 耦合并且不是那么 POJOey 之外,它工作正常。

如果我将逻辑放在 DAO 中,则会出现另一种代码味道,因为它将处理其 DTO 的 CRUD 和延迟加载,据我所知,对象应该有单一的责任。

我希望有一个相对简单的 Spring 方法,我可以使用它在 DAO 和 DTO 之间注入(inject)一个 Lazy Loader 对象来实现这一点,但任何其他解决方案都适合我。

有什么想法吗?

最佳答案

将 DAO 包裹在 DAO 的周围更容易……这取决于您想要引入多少模型。DTO 通常不用于将一对多作为两个或多个单独的数据库/dao 调用。在那种情况下,你真的需要一个 ORM。由于您正在寻找 dao 答案......

没有什么能阻止您将 DAO 链接在一起以提供一个 DTO。然后将 DTO 连接到 DAO 会更容易。它不是真正的服务层,它只是 DAO 的构建 block 。所以你可能有一个 PersonDao 和一个 TelephoneNumberDao。一个人可以拥有多个电话号码,因此您也可以拥有 PersonModelDAo,它在底层使用 PersonDao 和 TelephoneNumberDao 来完成它的工作。

或者,避免整个问题,不要尝试在 DTO 级别映射人与电话号码之间的 1-N。只需让您的 UI 对正确的 DAO 进行正确的调用即可。在使用 DTO 时,我实际上更喜欢这个。

关于java - 在 Spring 中延迟加载 DTO 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/490595/

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