请问大家的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项目中是如何作的?
+ 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项目中是如何作的?
用spring组织DAO
http://www.blogjava.net/rickhunter/articles/24995.html在这篇文章中有一小节: 7.3 层的父型模式
这一小节就是将简单DAO的添删改抽象出一个父类DAO。看了这小节,你应该也明白了。