/ / Prečo sa HibernateTemplate neodporúča? [duplikát] - java, jar, hibernácia

Prečo sa HibernateTemplate neodporúča? [duplikát] - java, jar, hibernácia

Bol som zvyknutý getHibernateTemplate () v režime hibernácie 3, a teraz som sa presťahoval do režimu dlhodobého spánku 4 a tu som nenašiel nasledujúcu triedu:

org.springframework.orm.hibernate4.support.HibernateDaoSupport;

A tu som čítal o tom, že sa viac neodporúča používať

http://forum.springsource.org/showthread.php?117227-Missing-Hibernate-Classes-Interfaces-in-spring-orm-3.1.0.RC1

Môže mi niekto vysvetliť prečo? a v režime spánku 4 teraz budem musieť robiť všetky úlohy, ako je spúšťanie, zatváranie transakcie, ktorá bola automaticky riadená metódou getHibernateTemplate ()?

odpovede:

37 pre odpoveď č. 1

Pretože jeho hlavným cieľom bolo získať reláciu spánku Hibernate viazanú na súčasnú transakciu z jari, kedy SessionFactory.getCurrentSession() pretože už existuje (a na dlhú dobu: používanie HibenateTemplate sa odrádza aj v balíku hibernate3), nie je dôvod použiť túto triedu špecifickú pre jar namiesto použitia SessionFactory.getCurrentSession() aby ste získali reláciu viazanú na aktuálnu jarnú transakciu.

Ak používate Spring, mali by ste použiť deklaratívnu správu transakcií, ktorá vám umožní vyhnúť sa otváraniu, spáchaniu, zatváraniu a prepláchnutiu. Všetko to robí automaticky Spring:

@Autowired
private SessionFactory sessionFactory;

@Transactional
public void someMethod() {
// get the session for the current transaction:
Session session = sessionFactory.getCurrentSession();
// do things with the session (queries, merges, persists, etc.)
}

Vo vyššie uvedenom príklade bude transakcia(ak už nie je spustený) pred vyvolaním metódy; Referencia bude vytvorená na jar pre transakciu a relácia bude automaticky zrušená pred vykonaním transakcie, čo sa automaticky vykoná na jar, keď sa metóda vráti.