The purpose of this framework is to save the time, tedium and possible inconsistency of hand coding DAO layer objects. To this end, the framework provides a generic implementation of DAO layer objects for an application using Hibernate. The generic implementation can be extended and overridden on a method-by-method basis for each domain object individually or across the entire layer. This means that it is always possible to write code for an exceptional case, entirely bypassing the framework, yet for the usual case no code needs to be written at all.
The framework also builds on top of these generic DAOs with an interface that is easily exposed as a web service or remote object. (At The Revere Group (Open Systems division), we are using this for Adobe Flex and GWT R.I.A.s.) This becomes extremely powerful because of the extensive search options available in the framework.
The search capability is what sets this generic DAO implementation apart. It uses a powerful search object with extensive filtering options, sorting, paging and result transformers. The search is simpler to use than Hibernate Criteria objects, and it can be passed to and from remote clients. This greatly simplifies the creation of flexible UI searches and filtered lists.
The purpose of this blog is to help bring out ways to improve the framework to make it as useful, helpful and easy as possible.