Java 对复合对象使用DAO
我试图重写一堆DAO,设置如下:Java 对复合对象使用DAO,java,database,design-patterns,Java,Database,Design Patterns,我试图重写一堆DAO,设置如下: 只有普通JDBC(没有JPA、ORM) 没有使用接口 在插入对象之前进行大量检查 业务对象是紧密关联的 我的主要问题是: 如何持久化/检索由多个其他对象组成的业务对象? e、 我的客户DAO是否知道地址DAO并从那里检索csutomers地址 只有普通JDBC(没有JPA、ORM) 业务对象是紧密关联的 不知道为什么在希望业务对象被链接时不想使用JPA,但至少应该使用SpringJDBC模板,这样可以使您从一些样板代码中解脱出来 关于其他限制,我将按以下方式
- 只有普通JDBC(没有JPA、ORM)
- 没有使用接口
- 在插入对象之前进行大量检查
- 业务对象是紧密关联的
DAO
方法,并在支持DAOImpl
的SpringJDBC模板中实现它们。到处使用DAO并注入DAOImpl干杯 复合实体是DAO上的一层。如果要删除所有耦合,DAO保留的域对象应该是平坦的,没有关系。请参阅核心J2EE模式组合 另外,最好不要在DAO之间引入耦合,将一个DAO的查找器放在另一个DAO的查找器中。例如: AddressDAO.findForCustomerId(id) 不如使用第三个DAO来管理关系。即: CustomerAddressRelDAO.findAddressForCustomer(id)
如果您使用关系DAO,则地址和客户都不会相互依赖(或意识到)。谢谢!我想到了JPA。到目前为止,反对的理由是,这个应用程序并没有经过严格的设计,我也不确定在JPA上如何工作。(这个东西甚至不在应用服务器中运行!)。但是,如果我理解正确,第2-4点基本上意味着我编写了自己的entityManager,对吗?没错,如果您使用JPA规范定义实体及其关联并雇用JPA提供商,您的管理层将了解不同域对象(如客户、地址)之间的关联(像Hibernate一样),他们会负责持久化对象层次结构,您可以将精力集中在数据传输对象->域对象转换上