Hibernate, Spring - otwieranie i zamykanie sesji, poprawne użycie.

Hibernate, Spring - otwieranie i zamykanie sesji, poprawne użycie.
DA
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:47
0

Cześć,

Mam taki przykładowy kod:

Kopiuj
        configuration = new Configuration().configure("hibernate.cfg.xml")
                .addAnnotatedClass(Company.class);
                .addAnnotatedClass(Employee.class);

        SessionFactory factory = configuration.buildSessionFactory();
        Session session = factory.getCurrentSession();

//operacje do wykonania

        session.beginTransaction();
       
//zapisywanie danych

        session.getTransaction().commit();
        factory.close();

Załóżmy że mam w projekcie kilka klas @Repository w których wykonuję operacje crudowe.
Czy jest jakiś inny sposób aby za każdym razem nie używać w nich przytoczonego kodu?
Czy można np zrobić klasę Connection i wstrzykiwać ją zawsze tam gdzie chcę połączyć się z bazą? Może jest jakiś "ładniejszy" sposób?

Wiem że w JPA można użyć @PersistenceContext ale tu akurat chodzi mi o czystego Hibernate

edytowany 1x, ostatnio: Dazon
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

hibernate.cfg.xml

What year is this?!

Czy można np zrobić klasę Connection i wstrzykiwać ją zawsze tam gdzie chcę połączyć się z bazą?

Można.

Może jest jakiś "ładniejszy" sposób?

Hikari Connection Pool + JDBCTemplate, hiberate zaorać.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
DA
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:47
0

Wiele firm, programistów korzysta jeszcze przecież z Hibernate.

Shalom
Z COBOLa też, o niczym to nie świadczy ;)
PU
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 miesięcy
  • Postów:59
0

Fraza na dziś - Spring Data JPA

edytowany 1x, ostatnio: pustypawel
Charles_Ray
  • Rejestracja:około 17 lat
  • Ostatnio:około 7 godzin
  • Postów:1881
1
  1. Na pewno nie powinieneś tworzyć SessionFactory przy każdym zapytaniu.
  2. Używaj interfejsu EntityManager ze standardu JPA, zamiast Session. Będzie mniej bólu np. przy podbijaniu zależności jeśli korzystałbyś z jakiegoś API dostępnego w Hibernate.
  3. Użyj wzorca template method, wyjdzie Ci coś a la „generyczne DAO”, przepraszam: „repository”.
  4. Zamiast pisać wszystko z palca użyj Spring Data JPA (najlepiej wiedząc co się dzieje pod spodem).

”Engineering is easy. People are hard.” Bill Coughran

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.