我正在看这个使用hibernate,jsp和spring框架的java web应用程序。 (据我所知!)
文件布局如下:
classes/com/example/project1
在project1中
/dao
_entity_Dao.java
/dao/hibernate/
_entity_DaoHibernate.java
/factory
DaoFactory.java
DaoFactoryImpl.java
/managers
_entity_Manager.java
/managers/impl
_entity_ManagerImpl.java
/model
_entity_.java
/service
_xxxx_Service.java
/service/impl/
_xxxx_ServiceImpl.java
你们有没有在某处读过这种布局?它被认为是最佳实践吗?
工厂与经理和服务有什么区别? (高级别)
答案 0 :(得分:1)
对于使用Spring构建的应用程序的典型布局,我将查看随附的示例Web应用程序(意思是Spring)。
使用像DaoFactory这样的东西绝对不是最佳实践,Daos应该注入。一般情况下,除了一些不寻常的情况,你不应该需要带有Spring的工厂。注入是在Web应用程序启动时完成的,spring读取配置信息并构造所有对象并根据配置xml和/或注释将其插入(这假设您的对象具有单一范围,这对于像无状态的事情一样daos和服务,作为原型的东西获得在应用程序要求时创建的新副本。)
在Spring应用程序中,服务类似于无状态会话Bean,它是一个包含用例的应用程序逻辑的事务层。因此,如果您的用户执行的操作会导致多个不同的表更新,您可以将daos注入该服务,让该服务上的方法执行daos上的更新,并配置Spring以将该服务包装在使该方法具有事务性的代理。
我见过经理用作我所说的服务的另一个名字。在这里,我不知道他们在做什么。
答案 1 :(得分:0)
我不喜欢将接口和impl组合在一个项目中的想法。仅仅因为你想要使用接口并不意味着你想要使用impl并且它是繁琐的传递依赖。主要原因是因为将有多个impl(假设,即JPA / JDBC / Hibernate,或Axis2 / CXF等)。接口不应该绑定到实现,否则丢失点。这也允许简单的依赖注入,因为impls只是驻留在类路径上,然后像Proxy或Spring(例如)这样的东西可以注入实现。
很有可能,您只需要:
Interface Project
dao
EntityDao
types
Entity
HibernateImpl Project
dao
EntityHibernateDao
src/main/resources/
EntityMapping.cfg.xml