Los archivos de configuración My Spring + Hibernate son pequeños y súper ajustados. Uso el escaneo automático para encontrar mis entidades/daos modelo.Escribir menos DAO con Spring Hibernate usando las anotaciones
No quiero tener que escribir un DAO + DAOImpl para CADA entidad en mi jerarquía.
Algunos pueden calificar para tener los suyos, como si tuvieran relaciones complejas con otras entidades y requirieran más que la funcionalidad CRUD básica. Pero para el resto ...
¿Hay alguna forma de eludir el estándar de facto?
decir, algo como un DAO genérico, por ejemplo:
http://www.ibm.com/developerworks/java/library/j-genericdao/index.html
Entonces puedo hacer algo como
GenericDao dao = appContext.getBean("genericDao");
dao.save(car);
dao.save(lease);
¿Es esto posible con anotaciones? No quiero tener que configurar nada en xml. Si no puedo hacer más arriba, es todavía posible tener un GenericDaoImpl.java con algo como:
@Repository("carDao")
@Repository("leaseDao")
class GenericDaoImpl extends CustomHibernateDaoSupport implements GenericDao {
...
}
y luego
GenericDao dao = appContext.getBean("carDao");
dao.save(car);
dao = appContext.getBean("leaseDao"); //carDao is garbage coll.
dao.save(lease);
¿Es esta práctica en absoluto?
Me gusta esta idea, pero ¿funciona? Esperaría que el borrado de tipo llevara a una definición de bean duplicada, pero no lo he comprobado ... – seanhodges
Buscando alrededor, parece que se puede evitar el borrado usando interfaces secundarias: http: // stackoverflow.com/questions/502994/spring-ioc-and-generic-interface-type – seanhodges
Solo para aclarar, Autowired en SessionFactory conectará automáticamente la SessionFactory de Hibernate en Spring, ¿verdad? Pero, ¿qué ocurre si mi CustomHibernateDaoSupport amplía org.springframework.orm.hibernate3.support.HibernateDaoSupport con un método Autowired que llama a setSessionFactory (sessionFactory). Por lo tanto, de manera predeterminada, las otras sesiones de dao están configuradas para que Spring las administre automáticamente ... ¿Estas múltiples "sesiones" impondrían problemas de rendimiento? – sloven