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.