我有一个使用 Spring 的项目,它被分解成几十个 DAO 和相关的 DTO。我正在使用 JdbcTemplate,但仅此而已,因为它正是我满意的抽象级别。
我目前正在我的 DTO 上执行延迟加载,方法是在它们的 getter 中放置一些相当多毛的代码。
基本的样板逻辑是: 1. 如果字段不为 null,则返回其值并退出 2. 联系适当的 DAO 并获取相关的 DTO 3. 将它们存储到下一次。
它工作得很好,除了我的低级 DTO 与一大堆 DAO 相结合并且不是那么 POJOey。
如果我将逻辑放在 DAO 中,则会出现另一种代码气味,因为它将同时处理其 DTO 的 CRUD 和延迟加载,并且据我所知,对象应该有一个单一的责任。
我希望有一个相对简单的 Spring 方法,我可以使用它在 DAO 和 DTO 之间注入一个延迟加载器对象来实现这一点,但任何其他解决方案都对我有用。
有任何想法吗?