Moje pliki konfiguracyjne Spring + Hibernate są małe i bardzo szczelne. Korzystam z automatycznego skanowania, aby znaleźć moje modelowe jednostki/daos.Pisz mniej DAO ze Spring Hibernate za pomocą adnotacji
Nie chcę pisać DAO + DAOImpl dla KAŻDEJ jednostki w mojej hierarchii.
Niektóre z nich mogą kwalifikować się do własnych, np. Jeśli mają złożone relacje z innymi podmiotami i wymagają więcej niż podstawowej funkcjonalności CRUD. Ale do końca ...
Czy istnieje sposób na obejście normy defacto?
Powiedz coś rodzajowe DAO, ex:
http://www.ibm.com/developerworks/java/library/j-genericdao/index.html
Wtedy mogę zrobić coś
GenericDao dao = appContext.getBean("genericDao");
dao.save(car);
dao.save(lease);
Czy to możliwe, z adnotacjami? Nie chcę niczego konfigurować w xml. Jeśli nie mogę zrobić powyżej, jest to nadal możliwe, aby jeden GenericDaoImpl.java z czymś takim:
@Repository("carDao")
@Repository("leaseDao")
class GenericDaoImpl extends CustomHibernateDaoSupport implements GenericDao {
...
}
a następnie
GenericDao dao = appContext.getBean("carDao");
dao.save(car);
dao = appContext.getBean("leaseDao"); //carDao is garbage coll.
dao.save(lease);
Jest to praktyczne w ogóle?
Podoba mi się ten pomysł, ale czy to działa? Spodziewalibyśmy się, że wymazanie kodu doprowadziłoby do duplikowania definicji komponentu bean, ale nie sprawdziliśmy tego ... – seanhodges
Przeszukując, wygląda na to, że możesz wyminąć usuwanie przy użyciu interfejsów podrzędnych: http: // stackoverflow.com/questions/502994/spring-ioc-and-generic-interface-type – seanhodges
Aby wyjaśnić, Autowyred na SessionFactory będzie automatycznie wyposażyć Hibernate's SessionFactory na wiosnę, prawda? Ale co jeśli mój CustomHibernateDaoSupport rozszerza org.springframework.orm.hibernate3.support.HibernateDaoSupport o metodę Autowired która wywołuje setSessionFactory (sessionFactory). Więc domyślnie inne sesje dao są tak skonfigurowane, aby automatycznie zarządzały wiosną ... Czy te wielokrotne "sesje" narzucałyby problemy z wydajnością? – sloven