我注意到我的工作地点,我们倾向于将我们的服务级别对象放入我们的实体包中。这让我想知道我的实体类概念是否错误。我虽然实体类代表关系数据库中的表,但我是否正确?如果是这样,你会在哪里建议放置这些对象,也许在Service对象包中?
答案 0 :(得分:1)
我所在的位置,我们在模块中的包中定义实体对象。然后,服务接口将在同一个模块中的相同包中,但实现将在不同模块中的相同包中。将所有与EntityX相关的代码保存在同一个包中可能会很好;包括Entity,Dao和Service定义和实现。
答案 1 :(得分:1)
我根据他们的顾虑在逻辑上将它们分开。即使拥有数据访问层,服务层等,关注点也是分离的。我倾向于有点过分,但我做了类似的事情:
app
--model
----PersonEntity.java (JPA annotated entity)
--service
----PersonService.java (interface)
--web
----PersonController.java (SpringMVC Controller, Struts action, etc.)
--internal
----PersonServiceImpl.java (Contains JPA EntityManager, e.g.)
也就是说,如果您打算将所有内容保存在同一个项目中。我可能会将服务和模型代码分离到它自己的项目中,以防万一(例如),您可以编写单独的Web服务并重用相同的域模型。
仅供参考,我不是DAO的粉丝,但它们非常普遍。我不知道我会把dao放在哪里,但我可能会遵循相同的惯例。额外的包只是另一个文件夹,它没什么大不了的,并且尽可能地组织代码是有意义的。