Dar aici mi-au arătat:
Dacă există o persoană care va explica diferența dintre abordări și ceea ce face fiecare metodă, voi fi foarte recunoscător.
În prima variantă, nu înțeleg unde se adaugă parametrii de configurare. În al doilea rând, nu am înțeles exact cum sunt stabilite proprietățile. Înțeleg noua configurație (). AddProperties (proprietăți). identic cu noul Configuration () configure ("hibernate.cfg.xml")
Dacă nu sunt corect corect: în primul rând, Proprietăți proprietăți = Proprietăți noi ();. Apoi trebuie să adăugați diferitele proprietăți folosind metoda put ().
a fost văzută ultima dată 5 ianuarie '16 la 20:23
În toate cazurile, SessionFactory este construit în trei etape. 1) Obțineți configurația într-un fel sau altul. 2) La configurare, construiți un StandardServiceRegistry utilizând StandardServiceRegistryBuilder. 3) Prin StandardServiceRegistry, construiți o SessionFactory folosind Configuration. În ultimul caz, probabil o eroare. În loc să întoarceți noua Configurație () Configure () BuildSessionFactory (standardServ# 8203; iceRegistry); probabil a fost necesar să se scrie return cfg.buildSessionFactory (standardServiceRegistry); - Serghei 6 ianuarie '16 la 6:48
. @ AleksandrTischenko nouă configurație () addProperties (proprietăți) nu sunt identice cu noua configurație () Configurati ( "hibernate.cfg.xml") -. V.ladynev 17 ianuarie '16 la 00:24
Citește configurația de la hibernate.cfg.xml și hibernate.properties. Ar trebui să lucreze corect în toate expunerile Hibernate 4.
hibernate.cfg.xml este citit aici configuration.configure ()
Asta applySettings (configuration.getProperties ()) este necesară pentru a nu pierde proprietățile din hibernate.cfg.xml (acest fișier poate specifica proprietățile precum și în hibernate.properties). De exemplu, dacă există proprietăți care nu sunt enumerate (și, de obicei, nu sunt specificate), atunci e destul de acest
In general, acest meșterire urât cu ServiceRegistryBuilder datorită faptului că reglarea configurare suplimentară efectuată într-o clasă separată și buildSessionFactory () realizat prin imprudență @Deprecated.
În Hibernate 5, am vrut, în general, să abandonăm clasa de configurare și să mergem la configurație utilizând StandardServiceRegistryBuilder și MetadataSources. De la javadocs Configurare Hibernare 4.3
NOTĂ. Acest lucru va fi înlocuit de utilizarea StandardServiceRegistryBuilder și MetadataSources în loc de versiunea 4.0, moment în care această clasă va deveni depreciată și programată pentru a fi eliminată în 5.0. Consultați HHH-6183, HHH-2578 și HHH-6586 pentru detalii
Mai mult, în Hibernate 5, aparent, această idee a fost abandonată și nu există un astfel de comentariu în documentația pentru Configuraton.
hibernate.properties sunt citite într-un mod pervertit în inițializatorul static al clasei de mediu. Aceasta este, la prima referire la ea. Acest lucru se întâmplă cel mai probabil aici cu noua Configurație ().
Acesta va funcționa numai începând cu versiunea Hibernate 4.3, deoarece numai din această versiune există clasa StandardServiceRegistryBuilder. Puteți presupune că StandardServiceRegistryBuilder este același ca ServiceRegistryBuilder. Începând cu versiunea 4.3 ServiceRegistryBuilder a fost marcată ca @Deprecated. și tot conținutul său a fost copiat la StandardServiceRegistryBuilder.
metoda configure () nu este apelată, în consecință, informațiile de cartografiere din fișierul hibernate.cfg.xml nu vor fi citite. În general, această abordare poate fi considerată o versiune incompletă a celei de-a treia abordări.
Această abordare va funcționa corect începând cu versiunea Hibernate 4.3 (din cauza standardului deja furnizat). Dar conține concediere, care a fost menționată de @Sergey. Dacă eliminați redundanța, atunci această opțiune este redusă la
Care este același lucru cu prima abordare, deoarece StandardServiceRegistryBuilder este același ca ServiceRegistryBuilder.
Cum să faci ceea ce trebuie
Ceea ce trebuie să faci aici este așa
Motivul principal, în opinia mea, este că toate abordările de mai sus vor fi în general (!) Să lucreze corect cu Hibernate 5. Puteți citi mai multe despre acest lucru aici.
Deși buildSessionFactory () este declarat ca @Deprecated în Hibernate 4, în Hibernate 5 este suprascris înapoi! În consecință, codul de mai sus va funcționa corect în toate versiunile de Hibernate.
Specificarea căilor spre fișierele de configurare