日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringHibernate4

發(fā)布時間:2023/12/3 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringHibernate4 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.概述

本文將重點介紹如何使用Spring設置Hibernate 4 –我們將研究如何使用Java和XML配置來使用Hibernate 4配置Spring 3。 當然,該過程的某些部分對于Hibernate 3文章是通用的 。

2. Maven

要將Spring Persistence依賴項添加到項目pom.xml中 ,請參閱專注于Spring和Maven依賴項的文章 。

繼續(xù)使用Hibernate 4,Maven依賴項很簡單:

<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.2.4.Final</version> </dependency>

然后,要使Hibernate使用其代理模型,我們還需要javassist:

<dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.18.0-GA</version> </dependency>

并且由于我們將在本教程中使用MySQL,因此我們還需要:

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.26</version><scope>runtime</scope> </dependency>

最后,我們使用了正確的連接池,而不是僅開發(fā)人員的Spring實現(xiàn)– DriverManagerDataSource 。 我們在這里使用Tomcat JDBC連接池 :

<dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-dbcp</artifactId><version>7.0.41</version> </dependency>

3. Hibernate 4的Java Spring配置

在項目中使用Hibernate 4,從Hibernate 3設置遷移時,配置方面需要進行一些更改。

從Hibernate 3升級時,主要不同之處是使用Hibernate 4創(chuàng)建SessionFactory的方式。

它取代從Hibernate3的包老AnnotationSessionFactoryBean -這是現(xiàn)在從hibernate4包使用LocalSessionFactoryBean的完成。 新的FactoryBean承擔同樣的責任-從注釋掃描中引導SessionFactory 。 這是必需的,因為從Hibernate 3.6開始,舊的AnnotationConfiguration 已合并到Configuration中 ,因此新的Hibernate 4 LocalSessionFactoryBean使用此新的Configuration機制。

還值得一提的是,在Hibernate中4,Configuration.buildSessionFactory方法和機制也被棄用 贊成 Configuration.buildSessionFactory(ServiceRegistry) -這春天LocalSessionFactoryBean中尚未使用。

Hibernate 4的Spring Java配置:

import java.util.Properties; import javax.sql.DataSource; import 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.hibernate4.HibernateTransactionManager; import org.springframework.orm.hibernate4.LocalSessionFactoryBean; import org.springframework.transaction.annotation.EnableTransactionManagement; import com.google.common.base.Preconditions;@Configuration @EnableTransactionManagement @PropertySource({ "classpath:persistence-mysql.properties" }) @ComponentScan({ "org.baeldung.spring.persistence" }) public class PersistenceConfig {@Autowiredprivate Environment env;@Beanpublic LocalSessionFactoryBean sessionFactory() {LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();sessionFactory.setDataSource(restDataSource());sessionFactory.setPackagesToScan(new String[] { "org.baeldung.spring.persistence.model" });sessionFactory.setHibernateProperties(hibernateProperties());return sessionFactory;}@Beanpublic 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"));return dataSource;}@Beanpublic HibernateTransactionManager transactionManager() {HibernateTransactionManager txManager = new HibernateTransactionManager();txManager.setSessionFactory(sessionFactory().getObject());return txManager;}@Beanpublic PersistenceExceptionTranslationPostProcessor exceptionTranslation() {return new PersistenceExceptionTranslationPostProcessor();}Properties hibernateProperties() {return new Properties() {{setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));setProperty("hibernate.globally_quoted_identifiers", "true");}};} }

4. Hibernate 4的XML Spring配置

類似的, Hibernate 4也可以使用XML進行配置

<?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.hibernate4.LocalSessionFactoryBean"><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.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><bean id="persistenceExceptionTranslationPostProcessor" class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/></beans>

要將XML引導到Spring Context中,如果應用程序配置了Java配置,我們可以使用一個簡單的Java配置文件:

@Configuration @EnableTransactionManagement @ImportResource({ "classpath:hibernate4Config.xml" }) public class HibernateXmlConfig{// }

或者,如果整體配置是純XML的,我們可以簡單地將XML文件提供給Spring Context。

對于這兩種配置類型,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-drop

5. Spring,Hibernate和MySQL

Hibernate 3支持的驅動程序和方言已針對Hibernate 3 進行了廣泛討論 -一切仍然適用于Hibernate 4。

6.用法

至此,Hibernate 4已通過Spring進行了完整配置,我們可以在需要時直接注入原始的Hibernate SessionFactory

public abstract class BarHibernateDAO{@AutowiredSessionFactory sessionFactory;...protected Session getCurrentSession(){return sessionFactory.getCurrentSession();} }

這里重要的一點是,現(xiàn)在這是推薦的使用Hibernate API的方法–舊的HibernateTemplate不再包含在新的org.springframework.orm.hibernate4包中,因為它不應與Hibernate 4一起使用。

7.結論

在此示例中, 我們使用Hiberate 4配置了Spring –都使用Java和XML配置。 這個簡單項目的實現(xiàn)可以在github項目中找到–這是一個基于Eclipse的項目,因此應該很容易直接導入和運行。

參考:來自bakgung博客的JCG合作伙伴 Eugen Paraschiv 提供的Spring的Hibernate 4 。

翻譯自: https://www.javacodegeeks.com/2013/05/hibernate-4-with-spring.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的SpringHibernate4的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。