Hibernácia 3 s pružinou

1. Prehľad

Tento článok sa zameria na nastavenie Hibernácia 3 s pružinou - pozrieme sa na to, ako použiť konfiguráciu XML aj Java na nastavenie Springu s Hibernate 3 a MySQL.

Aktualizácia: tento článok je zameraný na režim dlhodobého spánku 3. Ak hľadáte aktuálnu verziu režimu dlhodobého spánku - toto je článok zameraný na ňu.

2. Java Konfigurácia pružiny pre režim dlhodobého spánku 3

Nastavenie Hibernate 3 s konfiguráciou Spring a Java je jednoduché:

import java.util.Properties; import javax.sql.DataSource; importovať org.apache.tomcat.dbcp.dbcp.BasicDataSource; importovať org.springframework.beans.factory.annotation.Autowired; importovať org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; importovať org.springframework.context.annotation.Configuration; importovať org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; importovať org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; importovať org.springframework.orm.hibernate3.HibernateTransactionManager; importovať org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean; importovať org.springframework.transaction.annotation.EnableTransactionManagement; import com.google.common.base.Preconditions; @Configuration @EnableTransactionManagement @PropertySource ({"classpath: persistence-mysql.properties"}) @ComponentScan ({"com.baeldung.spring.persistence"}) verejná trieda PersistenceConfig {@Autowired private Environment env; @Bean public AnnotationSessionFactoryBean sessionFactory () {AnnotationSessionFactoryBean sessionFactory = nový AnnotationSessionFactoryBean (); sessionFactory.setDataSource (restDataSource ()); sessionFactory.setPackagesToScan (nový reťazec [] {"com.baeldung.spring.persistence.model"}); sessionFactory.setHibernateProperties (hibernateProperties ()); návrat sessionFactory; } @Bean public DataSource restDataSource () {BasicDataSource dataSource = nový BasicDataSource (); dataSource.setDriverClassName (env.getProperty ("jdbc.driverClassName")); dataSource.setUrl (env.getProperty ("jdbc.url")); dataSource.setUsername (env.getProperty ("jdbc.user")); dataSource.setPassword (env.getProperty ("jdbc.pass")); vrátiť dátový zdroj; } @Bean @Autowired public HibernateTransactionManager transactionManager (SessionFactory sessionFactory) {HibernateTransactionManager txManager = nový HibernateTransactionManager (); txManager.setSessionFactory (sessionFactory); návrat txManager; } @Bean public PersistenceExceptionTranslationPostProcessor exceptionTranslation () {vrátiť nový PersistenceExceptionTranslationPostProcessor (); } Vlastnosti hibernateProperties () {vrátiť nové vlastnosti () {{setProperty ("hibernate.hbm2ddl.auto", env.getProperty ("hibernate.hbm2ddl.auto")); setProperty ("hibernate.dialect", env.getProperty ("hibernate.dialect")); }}; }}

V porovnaní s XML konfiguráciou - popísanou ďalej - je malý rozdiel v spôsobe prístupu jedného fazule v konfigurácii k druhej. V XML nie je žiadny rozdiel medzi ukazujúci na fazuľu alebo ukazujúci na fazuľovú továreň schopnú túto fazuľu vytvoriť. Pretože konfigurácia Java je typovo bezpečná - smerovanie priamo na továreň na fazule už nie je možné - musíme fazuľu z továrne na fazule načítať manuálne:

txManager.setSessionFactory (sessionFactory (). getObject ());

3. Konfigurácia pružiny XML pre režim dlhodobého spánku 3

Podobne môžeme nastaviť Hibernácia 3 s konfiguráciou XML tiež:

      $ {hibernate.hbm2ddl.auto} $ {hibernate.dialect} 

Potom je tento súbor XML bootstrapovaný do jarného kontextu pomocou a @ Konfigurácia trieda:

@Configuration @EnableTransactionManagement @ImportResource ({"classpath: persistenceConfig.xml"}) verejná trieda PersistenceXmlConfig {//}

Pre oba typy konfigurácie sú špecifické vlastnosti JDBC a Hibernate uložené v súbore vlastností:

# jdbc.X jdbc.driverClassName = com.mysql.jdbc.Driver jdbc.url = jdbc: mysql: // localhost: 3306 / spring_hibernate_dev? createDatabaseIfNotExist = true jdbc.user = tutorialuser jdbc.pass = tutorialmy5ql # hibate. dialect = org.hibernate.dialect.MySQL5Dialect hibernate.show_sql = false hibernate.hbm2ddl.auto = create-drop

4. Jar, režim dlhodobého spánku a MySQL

Vyššie uvedený príklad používa MySQL 5 ako základnú databázu nakonfigurovanú v režime spánku - Hibernate však podporuje niekoľko základných databáz SQL.

4.1. Vodič

Názov triedy ovládača sa konfiguruje pomocou the jdbc.driverClassName nehnuteľnosť poskytnuté do DataSource.

Vo vyššie uvedenom príklade je nastavená na com.mysql.jdbc.Driver z mysql-konektor-java závislosť, ktorú sme definovali v pom, na začiatku článku.

4.2. Dialekt

Dialekt sa konfiguruje pomocou the prezimovat.dialekt nehnuteľnosť poskytnuté Hibernácii SessionFactory.

Vo vyššie uvedenom príklade je to nastavené na org.hibernate.dialect.MySQL5Dialect pretože ako základnú databázu používame MySQL 5. Je ich niekoľko iné dialekty podporujúce MySQL:

  • org.hibernate.dialect.MySQL5InnoDBDialect - pre MySQL 5.x s úložným jadrom InnoDB
  • org.hibernate.dialect.MySQLDialect - pre MySQL pred 5.x
  • org.hibernate.dialect.MySQLInnoDBDialect - pre MySQL pred 5.x s úložným jadrom InnoDB
  • org.hibernate.dialect.MySQLMyISAMDialect - pre všetky verzie MySQL s úložným jadrom ISAM

Hibernate podporuje SQL dialekty pre každú podporovanú databázu.

5. Použitie

V tomto okamihu je režim dlhodobého spánku 3 plne nakonfigurovaný na jar a môžeme vstreknite surový režim dlhodobého spánkuSessionFactory priamo kedykoľvek potrebujeme:

verejná abstraktná trieda FooHibernateDAO {@Autowired SessionFactory sessionFactory; ... chránená relácia getCurrentSession () {návrat sessionFactory.getCurrentSession (); }}

6. Maven

Ak chcete do pomu pridať závislosť Spring Persistence, pozrite si príklad Spring with Maven - budeme musieť definovať obe jarný kontext a jar-orm.

Pokračovanie režimu dlhodobého spánku 3, závislosti Maven sú jednoduché:

 org.hibernate hibernate-core 3.6.10.Final 

Potrebujeme potom, aby sme mohli režimu spánku povoliť používanie modelu proxy javasista tiež:

 org.javassist javassist 3.18.2-GA 

Pre tento tutoriál použijeme ako svoju databázu MySQL, takže budeme potrebovať:

 runtime mysql mysql-connector-java 5.1.32 

A nakoniec nebudeme používať implementáciu jarného zdroja údajov - DriverManagerDataSource; namiesto toho použijeme riešenie oblasti pripojenia pripravené na produkciu - Tomcat JDBC Connection Pool:

 org.apache.tomcat tomcat-dbcp 7.0.55 

7. Záver

V tomto príklade nakonfigurovali sme režim Hibernate 3 na jar - s konfiguráciou Java aj XML. Implementáciu tohto jednoduchého projektu nájdete v projekte GitHub - jedná sa o projekt založený na Maven, takže by malo byť ľahké ho importovať a spustiť tak, ako je.


$config[zx-auto] not found$config[zx-overlay] not found