Hibernálás 3 tavasszal

1. Áttekintés

Ez a cikk a beállításra összpontosít Hibernálás 3 tavasszal - Megvizsgáljuk, hogyan lehet mind az XML, mind a Java konfigurációt használni a Spring Hibernate 3 és MySQL használatával.

Frissítés: Ez a cikk a Hibernate 3-ra összpontosít. Ha a Hibernate jelenlegi verzióját keresi, akkor erre a cikkre koncentrálunk.

2. Java Tavaszi konfiguráció a Hibernate 3 számára

A Hibernate 3 beállítása Spring és Java konfigurációval egyszerű:

import java.util.Tulajdonságok; importálja a javax.sql.DataSource; import org.apache.tomcat.dbcp.dbcp.BasicDataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Környezet; 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"}) public class PersistenceConfig {@Autowired private Environment env; @Bean public AnnotationSessionFactoryBean sessionFactory () {AnnotationSessionFactoryBean sessionFactory = new AnnotationSessionFactoryBean (); sessionFactory.setDataSource (restDataSource ()); sessionFactory.setPackagesToScan (új karakterlánc [] {"com.baeldung.spring.persistence.model"}); sessionFactory.setHibernateProperties (hibernateProperties ()); return sessionFactory; } @Bean public DataSource restDataSource () {BasicDataSource dataSource = új 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")); return dataSource; } @Bean @Autowired public HibernateTransactionManageractionManager (SessionFactory sessionFactory) {HibernateTransactionManager txManager = új HibernateTransactionManager (); txManager.setSessionFactory (sessionFactory); return txManager; } @Bean public PersistenceExceptionTranslationPostProcessor kivételTranslation () {return new PersistenceExceptionTranslationPostProcessor (); } Tulajdonságok hibernateProperties () {return new Properties () {{setProperty ("hibernate.hbm2ddl.auto", env.getProperty ("hibernate.hbm2ddl.auto")); setProperty ("hibernate.dialect", env.getProperty ("hibernate.dialect")); }}; }}

Az alábbiakban ismertetett XML konfigurációhoz képest kicsi a különbség abban, ahogyan az egyik bab a konfigurációban hozzáfér a másikhoz. XML-ben nincs különbség a között rámutatva egy babra vagy rámutatva egy babgyárra, amely képes létrehozni azt a babot. Mivel a Java konfiguráció típusbiztonságos - a babgyárra történő közvetlen mutatás már nem lehetséges -, a babot manuálisan kell lekérnünk a babgyárból:

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

3. XML Spring konfiguráció a hibernáláshoz 3

Hasonlóképpen beállíthatjuk Hibernálás 3 XML konfigurációval is:

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

Ezután ezt az XML fájlt a Spring segítségével kontextusba csomagolják az a használatával @ Konfiguráció osztály:

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

Mindkét konfigurációs típus esetében a JDBC és a hibernált funkciók egy tulajdonságfájlban vannak tárolva:

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

4. Tavasz, hibernálás és MySQL

A fenti példa a MySQL 5-et használja a Hibernate beállítással konfigurált alapadatbázisként - a Hibernate azonban több mögöttes SQL-adatbázist támogat.

4.1. A sofőr

A Driver osztály nevét a a jdbc.driverClassName ingatlan az adatforráshoz.

A fenti példában a com.mysql.jdbc.Driver tól mysql-connector-java függőséget, amelyet a cikk elején definiáltunk a pomban.

4.2. A dialektus

A dialektus a következő segítségével konfigurálható: a hibernálni.tárcsázni ingatlan a Hibernate számára biztosított SessionFactory.

A fenti példában ennek értéke: org.hibernate.dialect.MySQL5Dialect mivel a MySQL 5-öt használjuk alapul szolgáló adatbázisként. Több is van a MySQL-t támogató egyéb nyelvjárások:

  • org.hibernate.dialect.MySQL5InnoDBDialect - MySQL 5.x esetén az InnoDB tároló motorral
  • org.hibernate.dialect.MySQLDialect - MySQL esetén az 5.x előtt
  • org.hibernate.dialect.MySQLInnoDBDialect - 5.x előtti MySQL esetén az InnoDB tároló motorral
  • org.hibernate.dialect.MySQLMyISAMDialect - minden MySQL verzióhoz, az ISAM tároló motorral

A hibernálás minden támogatott adatbázisban támogatja az SQL dialektusokat.

5. Használat

Ezen a ponton a Hibernate 3 teljesen konfigurálva van a Spring-szel, és mi tudjuk fecskendezze be a nyers hibernált állapototSessionFactory közvetlenül, amikor szükségünk van:

nyilvános absztrakt osztály FooHibernateDAO {@Autowired SessionFactory sessionFactory; ... védett munkamenet getCurrentSession () {return sessionFactory.getCurrentSession (); }}

6. Maven

Ha hozzá szeretné adni a tavaszi perzisztencia-függőségeket a pomhoz, olvassa el a Spring with Maven példát - mindkettőt meg kell határoznunk tavaszi kontextus és tavasz-orm.

A Hibernate 3 folytatásával a Maven-függőségek egyszerűek:

 org.hibernate hibernate-core 3.6.10.Végső 

Ezután ahhoz, hogy a Hibernate használhassa proxy modelljét, szükségünk van javassist is:

 org.javassist javassist 3.18.2-GA 

A MySQL-t fogjuk használni DB-ként ehhez az oktatóanyaghoz, ezért szükségünk lesz:

 mysql mysql-connector-java 5.1.32 futásidejű 

És végül nem fogjuk használni a tavaszi adatforrás-megvalósítást - a DriverManagerDataSource; ehelyett egy gyártásra kész csatlakozási készlet megoldást fogunk használni - Tomcat JDBC Connection Pool:

 org.apache.tomcat tomcat-dbcp 7.0.55 

7. Következtetés

Ebben a példában a Hibernate 3-at konfiguráltuk Spring-szel - Java és XML konfigurációval egyaránt. Ennek az egyszerű projektnek a megvalósítása megtalálható a GitHub projektben - ez egy Maven-alapú projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.


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