最新的,符合 JPA 的 GenericDAO 实现

Posted

技术标签:

【中文标题】最新的,符合 JPA 的 GenericDAO 实现【英文标题】:Up to date, JPA compliant GenericDAO Implementation 【发布时间】:2011-02-21 16:23:31 【问题描述】:

我读了这篇文章:

http://www.ibm.com/developerworks/java/library/j-genericdao.html

几次,相信我明白它在说什么。但是,它已经 4 岁了,我有一个符合 JPA 的 Java 应用程序要处理。另外,我看到 Spring 中有一个 JPATemplate 有一些很好的功能,但是 Spring 文档说它已经被弃用了!

谁能指出一个可靠的、现代的、符合 JPA 的、基于 Spring 的 GenericDAOImpl 工作示例,它代理一个接口以提供通用查找器执行?

【问题讨论】:

【参考方案1】:

如今,JPA 2 本身已成为 DAO 层的体面实现,因为它的职责(或合同,如果您愿意)与传统的“精心设计”的 DAO 相同,即业务逻辑与存储的隔离机制。一个重要的含义是,只有在使用电子表格文件、Web 服务等非 DBMS 存储时,您才可能需要显式 DAO。

【讨论】:

【参考方案2】:

我创建了一个通用 DAO,混合了我在 this question 上分享的不同方法。我使用这两种方法:DDD: The Generic Repository 和 JPA implementation patterns: Data Access Objects。

如果您认为可以改进,请随时评论/编辑。

【讨论】:

这是一个开始——感谢您的帮助。对我来说,它的一个重要方面是单个 DAO 实现通过一组 DAO 接口执行任何命名查询的能力。 IBM 文章使用了 AOP,但我正在研究一种使用代理对象来实现定义的接口而不使用 AOP 的方法。

以上是关于最新的,符合 JPA 的 GenericDAO 实现的主要内容,如果未能解决你的问题,请参考以下文章

将分离的实体合并到 JPA 中的实体管理器的最佳方法是啥

错误:没有找到符合条件的依赖项

泛型 Dao、服务层和多个匹配的 bean

如何使用 QueryDSL 构建 GenericDao?

GenericDAO 和 NoSuchBeanDefinitionException:没有唯一的 bean Spring 3.0

使用 group by / unique 进行 Genericdao 搜索