DAO Fusion is a lightweight yet comprehensive and extensible Java based Data Access Object (DAO) pattern implementation built on top of Java Persistence API (JPA) and Hibernate.
You could think of DAO Fusion as a solid foundation for your own DAO layers, doing most of the usual heavy lifting for you and providing support for common DAO-related tasks and patterns, such as:
Model your business domain using a standard persistent entity model with out-of-the-box default persistent entity implementations.
Build your DAO layer by extending standard persistent entity DAO interfaces / abstract implementations which already provide most of the usual DAO functionality.
Construct persistent entity criteria with advanced filtering, sorting and paging capabilities and pass them to DAO methods to query for desired results.
Use the criteria transfer object (CTO) pattern to construct client-side versions of persistent entity criteria instances and pass them through the chosen communication mechanism to the remote server-side component, employing a CTO converter for seamless CTO-to-criteria transformation.
Add temporal aspects to your business domain, tracking persistent entities in two distinct timelines denoting the validity of facts and your knowledge of such facts throughout the time.
In addition to all of that, DAO Fusion provides an out-of-the-box integration test support based on JUnit and Spring's TestContext framework.
Integration tests interact with the chosen database instance and make sure that all standard DAO implementations are properly and thoroughly tested using a non-trivial sample domain model. Note that DAO Fusion is integration-tested against many popular databases, including MySQL, PostgreSQL, DB2, Oracle 10g and MS SQL Server 2000.
Check out our Hello, DAO! tutorial to get up and running with DAO Fusion. Post your questions, ideas or comments on our discussion group or use our issue tracker for reporting issues.
Everyone is welcome to join the project and contribute with his or her ideas. See our roadmap to get an overview of planned feature releases and their milestones.