Dvalemodus 3 med vår

1. Oversikt

Denne artikkelen vil fokusere på oppsett Dvalemodus 3 med vår - vi ser på hvordan du bruker både XML- og Java-konfigurasjon for å sette opp Spring med Hibernate 3 og MySQL.

Oppdatering: denne artikkelen er fokusert på dvalemodus 3. Hvis du leter etter den nåværende versjonen av dvalemodus - dette er artikkelen som er fokusert på den.

2. Java Vårkonfigurasjon for dvalemodus 3

Å sette opp dvalemodus 3 med vår- og Java-konfigurasjon er greit:

importere java.util.Properties; importere javax.sql.DataSource; importer org.apache.tomcat.dbcp.dbcp.BasicDataSource; importer org.springframework.beans.factory.annotation.Autowired; importer org.springframework.context.annotation.Bean; importer org.springframework.context.annotation.ComponentScan; importer org.springframework.context.annotation.Configuration; importer org.springframework.context.annotation.PropertySource; importer org.springframework.core.env.Environment; importer org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; importer org.springframework.orm.hibernate3.HibernateTransactionManager; importer org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean; importer org.springframework.transaction.annotation.EnableTransactionManagement; importer 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øktFabrikk; } @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")); returner datakilde; } @Bean @Autowired public HibernateTransactionManager transactionManager (SessionFactory sessionFactory) {HibernateTransactionManager txManager = new HibernateTransactionManager (); txManager.setSessionFactory (sessionFactory); returnere txManager; } @Bean public PersistenceExceptionTranslationPostProcessor exceptionTranslation () {return new PersistenceExceptionTranslationPostProcessor (); } Egenskaper hibernateProperties () {return new Properties () {{setProperty ("hibernate.hbm2ddl.auto", env.getProperty ("hibernate.hbm2ddl.auto")); setProperty ("hibernate.dialect", env.getProperty ("hibernate.dialect")); }}; }}

Sammenlignet med XML-konfigurasjonen - beskrevet neste - er det en liten forskjell i måten en bønne i konfigurasjonen får tilgang til en annen. I XML er det ingen forskjell mellom peker på en bønne eller peker på en bønnefabrikk som er i stand til å lage den bønnen. Siden Java-konfigurasjonen er typesikker - å peke direkte til bønnefabrikken ikke lenger er et alternativ - må vi hente bønnen manuelt fra bønnefabrikken:

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

3. XML-fjærkonfigurasjon for dvalemodus 3

På samme måte kan vi sette opp Dvalemodus 3 med XML-konfigurasjon også:

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

Deretter blir denne XML-filen startet opp i vårkonteksten ved hjelp av en @Konfigurasjon klasse:

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

For begge konfigurasjonstyper lagres de spesifikke egenskapene JDBC og Hibernate i en egenskapsfil:

# 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 dvalemodus.hbm2ddl.auto = create-drop

4. Vår, dvalemodus og MySQL

Eksemplet ovenfor bruker MySQL 5 som den underliggende databasen konfigurert med Hibernate - Hibernate støtter imidlertid flere underliggende SQL-databaser.

4.1. Sjåføren

Driverklassenavnet konfigureres via de jdbc.driverClassName eiendom gitt til DataSource.

I eksemplet ovenfor er det satt til com.mysql.jdbc.Driver fra mysql-connector-java avhengighet vi definerte i pom, i begynnelsen av artikkelen.

4.2. Dialekten

Dialekten konfigureres via de dvalemodus. dialekt eiendom gitt til dvalemodus SessionFactory.

I eksemplet ovenfor er dette satt til org.hibernate.dialect.MySQL5Dialect når vi bruker MySQL 5 som den underliggende databasen. Det er flere andre dialekter som støtter MySQL:

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

Dvalemodus støtter SQL Dialects for hver støttet database.

5. Bruk

På dette punktet er Hibernate 3 fullt konfigurert med Spring, og vi kan injiser den rå dvalemodusSessionFactory direkte når vi trenger å:

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

6. Maven

For å legge til Spring Persistence-avhengigheter til pom, se eksemplet Spring with Maven - vi må definere begge deler vår-kontekst og vår-orm.

Fortsatt til dvalemodus 3 er Maven-avhengighetene enkle:

 org. dvale dvalekjerne 3.6.10.Final 

Deretter trenger vi for å gjøre dvalemodus i stand til å bruke proxy-modellen javassist også:

 org.javassist javassist 3.18.2-GA 

Vi skal bruke MySQL som vår DB for denne opplæringen, så vi trenger også:

 mysql mysql-connector-java 5.1.32 kjøretid 

Og til slutt vil vi ikke bruke vår datakildeimplementering - DriverManagerDataSource; i stedet bruker vi en produksjonsklar tilkoblingsbassengløsning - Tomcat JDBC Connection Pool:

 org.apache.tomcat tomcat-dbcp 7.0.55 

7. Konklusjon

I dette eksemplet, vi konfigurerte Hibernate 3 med Spring - både med Java og XML-konfigurasjon. Implementeringen av dette enkle prosjektet finner du i GitHub-prosjektet - dette er et Maven-basert prosjekt, så det skal være enkelt å importere og kjøre som det er.


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