Hibernate 3 s proljećem

1. Pregled

Ovaj će se članak usredotočiti na postavljanje Hibernate 3 s proljećem - pogledat ćemo kako koristiti XML i Java konfiguraciju za postavljanje Springa s Hibernate 3 i MySQL.

Ažuriranje: ovaj je članak usredotočen na Hibernate 3. Ako tražite trenutnu verziju Hibernate-a - ovo je članak usmjeren na njega.

2. Java Proljetna konfiguracija za hibernaciju 3

Postavljanje Hibernate 3 s Spring i Java config je jednostavno:

import java.util.Properties; uvoz javax.sql.DataSource; import org.apache.tomcat.dbcp.dbcp.BasicDataSource; uvoz org.springframework.beans.factory.annotation.Autowired; uvoz org.springframework.context.annotation.Bean; uvoz org.springframework.context.annotation.ComponentScan; uvoz org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; uvoz org.springframework.core.env.Environment; import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; import org.springframework.orm.hibernate3.HibernateTransactionManager; import org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean; import org.springframework.transaction.annotation.EnableTransactionManagement; import com.google.common.base.Preconditions; @Configuration @EnableTransactionManagement @PropertySource ({"classpath: persistence-mysql.properties"}) @ComponentScan ({"com.baeldung.spring.persistence"}) javna klasa PersistenceConfig {@Automobilsko privatno okruženje env; @Bean public AnnotationSessionFactoryBean sessionFactory () {AnnotationSessionFactoryBean sessionFactory = new AnnotationSessionFactoryBean (); sessionFactory.setDataSource (restDataSource ()); sessionFactory.setPackagesToScan (novi String [] {"com.baeldung.spring.persistence.model"}); sessionFactory.setHibernateProperties (hibernateProperties ()); return sessionFactory; } @Bean public DataSource restDataSource () {BasicDataSource dataSource = novi 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")); vratiti dataSource; } @Bean @Autowired javni HibernateTransactionManageractionManager (SessionFactory sessionFactory) {HibernateTransactionManager txManager = novi HibernateTransactionManager (); txManager.setSessionFactory (sessionFactory); vrati txManager; } @Bean public PersistenceExceptionTranslationPostProcessor exceptionTranslation () {return new PersistenceExceptionTranslationPostProcessor (); } Svojstva hibernateProperties () {vratiti nova svojstva () {{setProperty ("hibernate.hbm2ddl.auto", env.getProperty ("hibernate.hbm2ddl.auto")); setProperty ("hibernate.dialect", env.getProperty ("hibernate.dialect")); }}; }}

U usporedbi s XML konfiguracijom - koja je opisana u nastavku - postoji mala razlika u načinu na koji jedan grah u konfiguraciji pristupa drugom. U XML-u nema razlike između pokazujući na grah ili pokazujući na tvornicu graha koja je sposobna stvoriti taj grah. Budući da je Java konfiguracija sigurna za tip - usmjeravanje izravno na tvornicu graha više nije opcija - moramo grah dohvatiti iz tvornice graha:

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

3. Konfiguracija XML proljeća za hibernaciju 3

Slično tome, možemo postaviti Hibernate 3 s XML konfiguracijom također:

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

Zatim se ova XML datoteka pokreće u kontekstu Spring pomoću a @Konfiguracija razred:

@Configuration @EnableTransactionManagement @ImportResource ({"classpath: persistenceConfig.xml"}) javna klasa PersistenceXmlConfig {//}

Za obje vrste konfiguracije, specifična svojstva JDBC i Hibernate pohranjuju se u datoteku svojstava:

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

4. Proljeće, hibernacija i MySQL

Gornji primjer koristi MySQL 5 kao osnovnu bazu podataka konfiguriranu s Hibernate - međutim, Hibernate podržava nekoliko osnovnih SQL baza podataka.

4.1. Vozač

Naziv klase vozača konfigurira se putem the jdbc.driverClassName imovine dostavljeno DataSourceu.

U gornjem primjeru postavljeno je na com.mysql.jdbc.Driver od mysql-konektor-java ovisnost koju smo definirali u pom, na početku članka.

4.2. Dijalekt

Dijalekt se konfigurira putem the zimski san.dijalekt imovine pružio zimski san SjednicaTvornica.

U gornjem primjeru ovo je postavljeno na org.hibernate.dialect.MySQL5Dialect jer koristimo MySQL 5 kao temeljnu bazu podataka. Ima ih nekoliko ostali dijalekti koji podržavaju MySQL:

  • org.hibernate.dialect.MySQL5InnoDBDialect - za MySQL 5.x s InnoDB mehanizmom za pohranu
  • org.hibernate.dialect.MySQLDialect - za MySQL prije 5.x
  • org.hibernate.dialect.MySQLInnoDBDialect - za MySQL prije 5.x s InnoDB mehanizmom za pohranu
  • org.hibernate.dialect.MySQLMyISAMDialect - za sve verzije MySQL s mehanizmom za pohranu ISAM

Hibernate podržava SQL dijalekte za svaku podržanu bazu podataka.

5. Upotreba

U ovom je trenutku Hibernate 3 u potpunosti konfiguriran s Springom i mi to možemo ubrizgajte sirovi hibernatSjednicaTvornica izravno kad god trebamo:

javni sažetak klase FooHibernateDAO {@Autowired SessionFactory sessionFactory; ... zaštićena sesija getCurrentSession () {povratak sessionFactory.getCurrentSession (); }}

6. Maven

Da biste dodali ovisnosti o postojanosti proljeća na pom, pogledajte primjer Proljeće s Mavenom - trebat ćemo definirati oboje proljeće-kontekst i proljeće-orm.

Nastavljajući Hibernate 3, ovisnosti o Mavenu su jednostavne:

 org.hibernate hibernate-core 3.6.10.Final 

Zatim, da bismo omogućili Hibernateu upotrebu proxy modela, trebamo javassist također:

 org.javassist javassist 3.18.2-GA 

Koristit ćemo MySQL kao naš DB za ovaj vodič, pa će nam također trebati:

 mysql mysql-connector-java 5.1.32 vrijeme izvođenja 

I na kraju, nećemo koristiti implementaciju izvora podataka Spring - DriverManagerDataSource; umjesto toga, koristit ćemo proizvodno spremno rješenje spremišta spremišta - Tomcat JDBC Connection Pool:

 org.apache.tomcat tomcat-dbcp 7.0.55 

7. Zaključak

U ovom primjeru, konfigurirali smo Hibernate 3 s Springom - i s Java i XML konfiguracijom. Provedbu ovog jednostavnog projekta možete pronaći u projektu GitHub - ovo je projekt zasnovan na Mavenu, pa bi ga trebalo lako uvesti i pokrenuti kakav jest.


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