javascript
SpringHibernate3
1.概述
本文將重點(diǎn)介紹通過Spring設(shè)置Hibernate 3 –我們將研究如何同時(shí)使用XML和Java配置通過Hibernate 3和MySQL設(shè)置Spring 3。
2. Hibernate 3的Java Spring配置
 使用Spring和Java配置來設(shè)置Hibernate 3很簡單: 
與XML配置(如下所述)相比,配置中的一個(gè)Bean訪問另一個(gè)Bean的方式略有不同。 在XML中, 指向bean或指向能夠創(chuàng)建該bean的bean工廠之間沒有區(qū)別。 由于Java配置是類型安全的-不再直接指向Bean工廠-我們需要從Bean工廠中手動(dòng)檢索Bean:
txManager.setSessionFactory(sessionFactory().getObject());同樣,我們也可以使用XML配置來設(shè)置Hibernate 3 :
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"><context:property-placeholder location="classpath:persistence-mysql.properties" /><bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="packagesToScan" value="org.baeldung.spring.persistence.model" /><property name="hibernateProperties"><props><prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop><prop key="hibernate.dialect">${hibernate.dialect}</prop></props></property></bean><bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource"><property name="driverClassName" value="${jdbc.driverClassName}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.user}" /><property name="password" value="${jdbc.pass}" /></bean><bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><bean id="persistenceExceptionTranslationPostProcessor" class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/></beans>然后,使用@Configuration類將該XML文件引導(dǎo)到Spring上下文中:
@Configuration @EnableTransactionManagement @ImportResource({ "classpath:persistenceConfig.xml" }) public class PersistenceXmlConfig {// }對于這兩種配置類型,JDBC和Hibernate特定的屬性都存儲在屬性文件中:
# 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 # hibernate.X hibernate.dialect=org.hibernate.dialect.MySQL5Dialect hibernate.show_sql=false hibernate.hbm2ddl.auto=create-drop4. Spring,Hibernate和MySQL
上面的示例使用MySQL 5作為配置有Hibernate的基礎(chǔ)數(shù)據(jù)庫-但是,Hibernate支持多個(gè)基礎(chǔ)SQL數(shù)據(jù)庫 。
4.1。 司機(jī)
通過提供給數(shù)據(jù)源的jdbc.driverClassName屬性配置驅(qū)動(dòng)程序類名稱。
在上面的示例中,從本文開頭的pom中定義的mysql-connector-java依賴項(xiàng)將其設(shè)置為com.mysql.jdbc.Driver 。
4.2。 方言
通過提供給Hibernate SessionFactory 的hibernate.dialect屬性來配置方言。
在上面的示例中,將其設(shè)置為org.hibernate.dialect.MySQL5Dialect,因?yàn)槲覀兪褂肕ySQL 5作為基礎(chǔ)數(shù)據(jù)庫。 還有其他幾種支持MySQL的方言 :
- org.hibernate.dialect.MySQL5InnoDBDialect –適用于具有InnoDB存儲引擎MySQL 5.x
- org.hibernate.dialect.MySQLDialect –適用于5.x之前MySQL
- org.hibernate.dialect.MySQLInnoDBDialect –適用于使用InnoDB存儲引擎的5.x之前MySQL
- org.hibernate.dialect.MySQLMyISAMDialect –適用于帶有ISAM存儲引擎的所有MySQL版本
Hibernate 支持每個(gè)支持的數(shù)據(jù)庫的SQL方言 。
5.用法
至此,Hibernate 3已通過Spring進(jìn)行了完整配置,我們可以在需要時(shí)直接注入原始的Hibernate SessionFactory :
public abstract class FooHibernateDAO{@AutowiredSessionFactory sessionFactory;...protected Session getCurrentSession(){return sessionFactory.getCurrentSession();} }6. Maven
要將Spring Persistence依賴項(xiàng)添加到pom,請參見Spring with Maven示例 –我們需要定義spring-context和spring-orm 。
繼續(xù)使用Hibernate 3,Maven依賴項(xiàng)很簡單:
<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>3.6.10.Final</version> </dependency>然后,要使Hibernate使用其代理模型,我們還需要javassist :
<dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.18.0-GA</version> </dependency>在本教程中,我們將使用MySQL作為數(shù)據(jù)庫,因此我們還需要:
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.25</version><scope>runtime</scope> </dependency>最后,我們將不再使用Spring數(shù)據(jù)源實(shí)現(xiàn)– DriverManagerDataSource ; 相反,我們將使用可用于生產(chǎn)環(huán)境的連接池解決方案-Tomcat JDBC連接池:
<dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-dbcp</artifactId><version>7.0.41</version> </dependency>7.結(jié)論
 在這個(gè)例子中, 我們使用Spring配置了Hibernate 3 –都使用Java和XML配置。 這個(gè)簡單項(xiàng)目的實(shí)現(xiàn)可以在github項(xiàng)目中找到–這是一個(gè)基于Eclipse的項(xiàng)目,因此應(yīng)該很容易直接導(dǎo)入和運(yùn)行。 
翻譯自: https://www.javacodegeeks.com/2013/05/hibernate-3-with-spring.html
總結(jié)
以上是生活随笔為你收集整理的SpringHibernate3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Java命令行界面(第10部分):pic
- 下一篇: 教你手机变电脑形式并带有开机声音如何手机
