我正在寻找一个实现DTO层和DAO层的J2EE Web服务示例。我对所涉及的概念很熟悉,但我正在努力以一种合理的方式将项目组合在一起。目前我有:具有DTO和DAO的示例Java EE Web服务
- 一个Web服务(WAR)项目,其中包含Web资源并具有对远程项目的 引用。
- 具有到EJB的远程接口的远程(JAR)项目具有EJB实现以及DAO对象(实体和辅助DAO类)的EJB(JAR)项目。和DAO和DTO之间的映射器类映射。这引用了远程项目。
EJB执行从DAO到DTO的映射并将DTO返回到Web Service类。
我一直在考虑将映射器类移到Web服务项目中,因为这似乎是一个很好的做法 - 它释放了EJB来处理业务对象而不是DTO。
的类的实例如下:
PersonResource
类Web服务项目:
@Path("/person")
@Stateless
public class PersonResource {
@EJB
private IPersonManagerRemote ejb;
@GET
@Produces("application/json")
@Path("/{id}")
public PersonDTO get(@PathParam("id") Long id) {
return ejb.get(id);
}
IPersonManagerRemote
接口远程项目:
@Remote
public interface IPersonManagerRemote {
public PersonDTO get(long id);
}
PersonManager
在EJB项目实施:
PersonMapper
单例类:
public class PersonMapper {
// Singleton creation code...
public PersonDTO map(Person dao) {
//Mapping code here to copy fields
}
}
我已经排除了IPersonDao
接口和它的实现PersonDao
,因为它们是非常标准。
我试图将调用映射到Web资源,但是随后我需要在Web项目和远程项目中引用EJB项目(对于DAO对象),这会导致循环引用,因为EJB项目引用远程项目。
我的EJB类应该返回DTO还是DAO对象,如果DAO应该在哪里映射代码驻留?
谢谢,我试图改进它。 –