Dvale 3 med forår

1. Oversigt

Denne artikel vil fokusere på opsætning Dvale 3 med forår - vi ser på, hvordan vi bruger både XML- og Java-konfiguration til at opsætte Spring med Hibernate 3 og MySQL.

Opdatering: denne artikel er fokuseret på dvale 3. Hvis du leder efter den aktuelle version af dvale - dette er artiklen fokuseret på den.

2. Java Forårskonfiguration for dvale 3

Opsætning af dvale 3 med Spring og Java-konfiguration er ligetil:

importere java.util.Properties; importere javax.sql.DataSource; importer 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.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"}) offentlig klasse PersistenceConfig {@Autowired private Environment env; @Bean public AnnotationSessionFactoryBean sessionFactory () {AnnotationSessionFactoryBean sessionFactory = ny AnnotationSessionFactoryBean (); sessionFactory.setDataSource (restDataSource ()); sessionFactory.setPackagesToScan (ny streng [] {"com.baeldung.spring.persistence.model"}); sessionFactory.setHibernateProperties (hibernateProperties ()); retur sessionFabrik; } @Bean public DataSource restDataSource () {BasicDataSource dataSource = new 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")); returnere datakilde; } @Bean @Autowired public HibernateTransactionManager transactionManager (SessionFactory sessionFactory) {HibernateTransactionManager txManager = new HibernateTransactionManager (); txManager.setSessionFactory (sessionFactory); returnere txManager; } @Bean public PersistenceExceptionTranslationPostProcessor exceptionTranslation () {returner ny PersistenceExceptionTranslationPostProcessor (); } Egenskaber hibernateProperties () {returner nye egenskaber () {{setProperty ("hibernate.hbm2ddl.auto", env.getProperty ("hibernate.hbm2ddl.auto")); setProperty ("hibernate.dialect", env.getProperty ("hibernate.dialect")); }}; }}

Sammenlignet med XML-konfigurationen - beskrevet næste - er der en lille forskel i den måde, hvorpå en bønne i konfigurationen får adgang til en anden. I XML er der ingen forskel mellem peger på en bønne eller peger på en bønnefabrik, der er i stand til at skabe den bønne. Da Java-konfigurationen er typesikker - at pege direkte på bønnefabrikken ikke længere er en mulighed - er vi nødt til at hente bønnen manuelt fra bønnefabrikken:

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

3. XML-fjederkonfiguration til dvale 3

På samme måde kan vi konfigurere Dvaletilstand 3 med XML-konfiguration såvel:

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

Derefter bootes denne XML-fil ind i Spring-konteksten ved hjælp af en @Konfiguration klasse:

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

For begge konfigurationstyper gemmes de specifikke JDBC- og dvaletilstand i en egenskabsfil:

# 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 .X dialekt = org.hibernate.dialect.MySQL5Dialect hibernate.show_sql = falsk hibernate.hbm2ddl.auto = Opret-slip

4. Forår, dvale og MySQL

Eksemplet ovenfor bruger MySQL 5 som den underliggende database konfigureret med Hibernate - Hibernate understøtter dog flere underliggende SQL-databaser.

4.1. Føreren

Driverklassens navn konfigureres via det jdbc.driverClassName ejendom leveres til DataSource.

I eksemplet ovenfor er det indstillet til com.mysql.jdbc.Driver fra mysql-connector-java afhængighed, vi definerede i pom, i starten af ​​artiklen.

4.2. Dialekten

Dialekten konfigureres via det dvale.opkald ejendom leveret til dvale SessionFactory.

I eksemplet ovenfor er dette indstillet til org.hibernate.dialect.MySQL5Dialect da vi bruger MySQL 5 som den underliggende database. Der er flere andre dialekter, der understøtter MySQL:

  • org.hibernate.dialect.MySQL5InnoDBDialect - til MySQL 5.x med InnoDB-lagringsmotoren
  • org.hibernate.dialect.MySQLDialect - til MySQL før 5.x
  • org.hibernate.dialect.MySQLInnoDBDialect - til MySQL før 5.x med InnoDB-lagringsmotoren
  • org.hibernate.dialect.MySQLMyISAMDialect - til alle MySQL-versioner med ISAM-lagringsmotoren

Dvaletilstand understøtter SQL Dialects for hver understøttet database.

5. Anvendelse

På dette tidspunkt er Hibernate 3 fuldt konfigureret med Spring, og vi kan indsprøjt den rå dvaleSessionFactory direkte når vi har brug for:

offentlig abstrakt klasse FooHibernateDAO {@Autowired SessionFactory sessionFactory; ... beskyttet Session getCurrentSession () {return sessionFactory.getCurrentSession (); }}

6. Maven

For at tilføje Spring Persistence-afhængigheder til pom, se venligst Spring with Maven-eksemplet - vi bliver nødt til at definere begge dele forårskontekst og forår-orm.

Fortsat til dvale 3 er Maven-afhængighederne enkle:

 org. dvale-dvale-kerne 3.6.10.Final 

Derefter har vi brug for at gøre det muligt for dvale at bruge sin proxy-model javassist såvel:

 org.javassist javassist 3.18.2-GA 

Vi bruger MySQL som vores DB til denne vejledning, så vi har også brug for:

 mysql mysql-connector-java 5.1.32 runtime 

Og til sidst bruger vi ikke implementeringen af ​​datakildens forår - DriverManagerDataSource; i stedet bruger vi en produktionsklar forbindelsespoolløsning - Tomcat JDBC Connection Pool:

 org.apache.tomcat tomcat-dbcp 7.0.55 

7. Konklusion

I dette eksempel vi konfigurerede Hibernate 3 med Spring - både med Java og XML-konfiguration. Implementeringen af ​​dette enkle projekt kan findes i GitHub-projektet - dette er et Maven-baseret projekt, så det skal være let at importere og køre som det er.