请问大家的Hibernate项目的类结构是怎么样的?我们的使用了DAO模式,一个表对应一个dao接口和一个实现dao,但我感觉很多代码都是重复的,不知道有没有改进的余地?我们的类结构如下:
+ business包
-----(这里面是业务类,现在是一个表对应一个XXDelegate.java类,与DAO都是一一对应的)+ dao包
----- + imp
---------- + hibernate
                (这里是具体实现DAO的类,与表一一对应XXXDAOHB.java,同时继承本包中的_RootDAO.java类,这里有具体hibernate操作数据的方法)
---------- DAO接口
                (这里是DAO接口,与表一一对应XXXDAO.java)
+ VO包
    (这里是VO类与hibernate配置文件,这个包没什么说的)现在的情况是,新来一个表abc之后,建立对应的VO与配置文件,然后在DAO包中建立对应的AbcDAO.java接口,在dao.imp.hibernate包中建立对应的实现类AbcDAOHB.java,它实现AbcDAO.java同时继承_RootDAO.java,然后在business包中建立AbcDelegate.java来调用DAO。现在我的问题是,这种结构中重复的代码太多,因为对于每一个表的操作都是增删改,所有表的DAO接口与实现都重复写了这些代码,只是处理的PO对象不同而已。还有就是business中,我感觉应该根据业务来建立对应的类,现在是每一个表对应一个业务类,感觉没有真正的把业务抽象出来。不知道大家在hibernate项目中是如何作的?

解决方案 »

  1.   

    因为你业务比较简单,表关系也不复杂,所以觉得分层没什么必要。其实小项目完全可以用jsp+javabean来完成。
      

  2.   

    AbcDelegate可粗一点, LargerDelegate(LargerService)可把一组类似的DAO包装起来,而且还可以作一些异常处理,不错不错(好像是自言自语?)俺有个项目就是这么做的
      

  3.   

    你可以看看这篇文章:
    用spring组织DAO
    http://www.blogjava.net/rickhunter/articles/24995.html在这篇文章中有一小节: 7.3    层的父型模式
    这一小节就是将简单DAO的添删改抽象出一个父类DAO。看了这小节,你应该也明白了。