I file di configurazione di Spring + Hibernate sono piccoli e molto resistenti. Uso la scansione automatica per trovare le entità/i miei modelli.Scrive meno DAO con Spring Hibernate utilizzando le annotazioni
Non voglio dover scrivere DAO + DAOImpl per OGNI entità nella mia gerarchia.
Alcuni possono qualificarsi come propri, ad esempio se hanno relazioni complesse con altre entità e richiedono più funzionalità CRUD di base. Ma per il resto ...
C'è un modo per aggirare lo standard defacto?
Di ', qualcosa come un DAO generica, es:
http://www.ibm.com/developerworks/java/library/j-genericdao/index.html
Allora posso fare qualcosa di simile
GenericDao dao = appContext.getBean("genericDao");
dao.save(car);
dao.save(lease);
Questo è possibile con annotazioni? Non voglio dover configurare nulla in xml. Se non riesco a fare sopra, è ancora possibile avere uno GenericDaoImpl.java con qualcosa di simile:
@Repository("carDao")
@Repository("leaseDao")
class GenericDaoImpl extends CustomHibernateDaoSupport implements GenericDao {
...
}
e poi
GenericDao dao = appContext.getBean("carDao");
dao.save(car);
dao = appContext.getBean("leaseDao"); //carDao is garbage coll.
dao.save(lease);
È questo pratico a tutti?
Mi piace questa idea, ma funziona? Mi aspetterei che la cancellazione di un tipo porterebbe a una definizione di bean duplicata, ma non l'ho verificato ... – seanhodges
Cercando in giro, sembra che si possa aggirare la cancellazione usando sub-interfacce: http: // StackOverflow.it/questions/502994/spring-ioc-and-generic-interface-type – seanhodges
Giusto per chiarire, Autowired su SessionFactory autowire SessionFactory di Hibernate in primavera, giusto? Ma cosa succede se il mio CustomHibernateDaoSupport estende org.springframework.orm.hibernate3.support.HibernateDao Support con un metodo Autowired che chiama setSessionFactory (sessionFactory). Quindi, per impostazione predefinita, le altre sessioni di dao sono configurate per essere automaticamente gestite da Spring ... Queste "sessioni" multiple impongono problemi di prestazioni? – sloven