Just to let you know I have written a tool that generates code from the database and one of the plugin, called "EJB3AndHibernateDao" generates code based on this pattern. It generates a pojo or an ejb3 for each table, a generic dao for each pojo and an hibernate implementation of this dao. See http://salto-db.sourceforge.net/salto-db-generator/index.html and http://salto-db.sourceforge.net/salto-db-generator/plugins/ejb3hibernatedao.html Thanks a lot for this article.