Bootstrapping Hibernate 5 עם Spring
1. סקירה כללית
במאמר זה נדון כיצד bootstrap Hibernate 5 with Spring, תוך שימוש בתצורת Java ו- XML.
מאמר זה מתמקד ב- MVC באביב. המאמר שלנו Spring Boot with Hibernate מתאר כיצד להשתמש ב- Hibernate ב- Spring Boot.
2. שילוב אביב
Bootstrapping א SessionFactory עם ה- API המקורי של Hibernate הוא מעט מסובך וייקח לנו לא מעט שורות קוד (עיין בתיעוד הרשמי למקרה שאתה באמת צריך לעשות זאת).
לְמַרְבֶּה הַמַזָל, האביב תומך באתחול SessionFactory – כך שנצטרך רק כמה שורות של קוד Java או תצורת XML.
3. תלות Maven
בוא נתחיל על ידי הוספת תחילה את התלות הדרושה שלנו pom.xml:
org.hibernate hibernate-core 5.4.2.Final
מודול האביב-אורם מספק את שילוב האביב עם מצב שינה:
org.springframework spring-orm 5.1.6.RELEASE
לשם הפשטות, נשתמש ב- H2 כמסד הנתונים שלנו:
com.h2database h2 1.4.197
לבסוף, אנו הולכים להשתמש ב- Tomcat JDBC Pooling Connection, שמתאים יותר למטרות ייצור מאשר ה- DriverManagerDataSource מסופק על ידי אביב:
org.apache.tomcat tomcat-dbcp 9.0.1
4. תצורה
כאמור, אביב תומך בנו בהפעלה של ה- Hibernate SessionFactory.
כל שעלינו לעשות הוא לעשות זאת להגדיר כמה שעועית וכן כמה פרמטרים.
עם האביב, יש לנו שתי אפשרויות לתצורות אלה, דרך Java מבוססת ו- XML.
4.1. באמצעות תצורת Java
לשימוש ב- Hibernate 5 עם Spring, מעט השתנה מאז Hibernate 4: עלינו להשתמש LocalSessionFactoryBean מהחבילה org.springframework.orm.hibernate5 במקום org.springframework.orm.hibernate4.
כמו ב- Hibernate 4 בעבר, עלינו להגדיר שעועית LocalSessionFactoryBean, מקור מידע, ו PlatformTransactionManager, כמו גם כמה מאפיינים ספציפיים למצב שינה.
בואו ניצור את שלנו HibernateConfig כיתה ל הגדר את מצב שינה 5 עם אביב:
@Configuration @EnableTransactionManagement מחלקה ציבורית HibernateConf {@Bean public LocalSessionFactoryBean sessionFactory () {LocalSessionFactoryBean sessionFactory = LocalSessionFactoryBean (חדש) sessionFactory.setDataSource (dataSource ()); sessionFactory.setPackagesToScan ({"com.baeldung.hibernate.bootstrap.model"}); sessionFactory.setHibernateProperties (hibernateProperties ()); מפגש חזרה מפעל; } @Bean DataSource ציבורי DataSource () {BasicDataSource dataSource = חדש BasicDataSource (); dataSource.setDriverClassName ("org.h2.Driver"); dataSource.setUrl ("jdbc: h2: mem: db; DB_CLOSE_DELAY = -1"); dataSource.setUsername ("sa"); dataSource.setPassword ("sa"); להחזיר dataSource; } @Bean פלטפורמה ציבוריתTransactionManager hibernateTransactionManager () {HibernateTransactionManager transactionManager = HibernateTransactionManager חדש (); transactionManager.setSessionFactory (sessionFactory (). getObject ()); TransactionManager החזר; } מאפיינים סופיים פרטיים hibernateProperties () {Properties hibernateProperties = מאפיינים חדשים (); hibernateProperties.setProperty ("hibernate.hbm2ddl.auto", "create-drop"); hibernateProperties.setProperty ("hibernate.dialect", "org.hibernate.dialect.H2Dialect"); החזר מאפייני שינה; }}
4.2. שימוש בתצורת XML
כאופציה משנית, אנו יכולים גם הגדר את Hibernate 5 עם תצורה מבוססת XML:
ליצור- drop.org.hibernate.dialect.H2Dialect
כפי שאנו רואים בקלות, אנו מגדירים בדיוק את אותם שעועית ופרמטרים כמו בתצורה מבוססת Java קודם לכן.
לאתחול ה- XML בהקשר האביב, אנו יכולים להשתמש בקובץ תצורה פשוט של Java אם היישום מוגדר עם תצורת Java:
@Configuration @EnableTransactionManagement @ImportResource ({"classpath: hibernate5Configuration.xml"}) בכיתה ציבורית HibernateXMLConf {//}
לחלופין, אנו יכולים פשוט לספק את קובץ ה- XML להקשר האביב, אם התצורה הכוללת היא XML בלבד.
5. שימוש
בשלב זה, Hibernate 5 מוגדר לחלוטין עם Spring, ואנחנו יכולים מזריקים את מצב השינה הגולמי SessionFactory ישירות בכל פעם שאנחנו צריכים:
כיתה מופשטת ציבורית BarHibernateDAO {@SessionFactory פרטית מאושרת sessionFactory; // ...}
6. מאגרי מידע נתמכים
למרבה הצער, פרויקט ה- Hibernate אינו מספק רשימה רשמית של מאגרי מידע נתמכים.
שנאמר, קל לראות אם ניתן לתמוך בסוג מסד נתונים מסוים, נוכל להסתכל ברשימת הניבים הנתמכים.
7. מסקנה
במדריך המהיר הזה, הגדרנו את האביב עם שנת תרדמה 5 - עם תצורת Java ו- XML כאחד.
כמו תמיד, קוד המקור המלא של הדוגמאות זמין באתר GitHub.