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.