关于spring整合hibernate的applicatonContext.xml配置

关于spring与hibernate的applicatonContext.xml配置(用maven创建项目)

如何将hibernate整合到spring中去呢?

1、创建项目,引入各自的相关JAR包
2、设计项目的包结构,以及类结构 (项目设计阶段)   ---垂直分块   水平分层
3、编写applicationContext.xml完成框架的整合
    
    <!-- 第1步:开启spring容器的自动扫描功能 -->
    <!-- 第2步:引入外部的数据库配置描述文件 -->
    <!-- 第3步:配置数据源连接池:C3P0,DBCP2,DRUID -->
    <!-- 第4步,配置SessionFactory -->
    <!-- 第5步,配置事务管理器 -->
    <!-- 第6步,配置hibernate模板操作类,持久层dao会用到这个类与数据库交互 -->
    <!-- 第7步,配置spring管理事务的2种方式:编程式事务管理,声明式事务管理 -->
    <!-- 第8步,开启切面动态代理支持 -->

需要jar包(必须):aspectjrt、aspectjweaver、hibernate-c3p0 、hibernate-core、mysql-connector-java、spring-context、spring-orm

测试jar包(可选):spring-test、junit

日志jar包(可选):log4j

 

applicatonContext.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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
						http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
						http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop.xsd
         http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd">

	<!-- 第1步:开启spring容器的自动扫描功能 -->
	<context:component-scan base-package="com.ali.sh"></context:component-scan>

	<!-- 第2步:引入外部的数据库配置描述文件 -->
	<context:property-placeholder location="classpath:mysql.properties" />

	<!-- 第3步:配置数据源连接池:C3P0,DBCP2,DRUID -->
	<!-- destroy-method="close" 该方法代表spring容器在销毁时,需要调用close(),关闭掉所有的数据库连接对象 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">

		<!-- 配置JDBC连接数据库的4个元素 -->
		<property name="driverClass" value="${jdbc.driver}"></property>
		<property name="jdbcUrl" value="${jdbc.url}"></property>
		<property name="user" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>

		<!-- 配置扩展属性 -->
		<!-- 配置连接池中,初始化的连接数量 -->
		<property name="initialPoolSize" value="5"></property>
		<!-- 配置连接池中,任何时刻允许存在的最大连接数量 -->
		<property name="maxPoolSize" value="50"></property>
		<!-- 配置连接池中,当连接不充足时,需要再次获取的连接数 -->
		<property name="acquireIncrement" value="10"></property>
		<!-- 配置连接池中,间隔10秒,检测一次空闲连接 -->
		<property name="idleConnectionTestPeriod" value="10"></property>
		<!-- 配置连接池中,用于校验连接是否有效的校验语句 -->
		<property name="preferredTestQuery" value="select now() from dual"></property>
		<!-- 配置连接池中,在借出连接时,需要通过SQL进行连接校验 -->
		<property name="testConnectionOnCheckout" value="true"></property>
		<!-- 配置连接池中,允许存在的最大预编译对象的数量 -->
		<property name="maxStatements" value="200"></property>
		<!-- 配置连接在创建时,需要等待的最大超时时间,单位:毫秒 如果设置为0,将会无限期等待 -->
		<property name="checkoutTimeout" value="5000"></property>
	</bean>


	<!-- 第4步,配置SessionFactory -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<!-- 开启自动扫描功能,扫描使用JPA规范(注解),完成ORM映射关系的实体类 -->
		<property name="packagesToScan">
			<array>
				<value>com.ali.sh.bean</value>
				<!-- <value>com.ali.sh.bean02</value> -->
			</array>
		</property>

		<!-- 假设你们公司,还在用XML完成ORM映射,那么就应该采用如下方式,完成注册 -->
		<!-- <property name="mappingResources"> <array> <value>com/ali/sh/xmls/UserBean.hbm.xml</value> 
			</array> </property> -->

		<!-- 配置跟 hibernate 相关的一些配置 -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
			</props>
		</property>
	</bean>

	<!-- 第5步,配置事务管理器 -->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<!-- 配置hibernate模板操作类,持久层dao会用到这个类与数据库交互 -->
	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>


	<!-- 第6步,配置spring管理事务的2种方式:编程式事务管理,声明式事务管理 -->
	<!-- 编程式事务管理 需要在业务类中,借助TransactionTemplate,PlatformTransactionManager 完成对业务逻辑 
		的逻辑事务管理 -->
	<!-- 声明式事务管理,第1种方式,采用AOP管理业务逻辑事务 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>

			<tx:method name="*" read-only="true" propagation="SUPPORTS" />

			<tx:method name="save*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="add*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="insert*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="create*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />

			<tx:method name="update*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="modify*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="change*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />

			<tx:method name="delete*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />
			<tx:method name="remove*" read-only="false" rollback-for="java.lang.Exception"
				propagation="REQUIRED" />

		</tx:attributes>
	</tx:advice>

	<aop:config>
		<aop:pointcut id="txMagPoint"
			expression="execution(* com.gezhi.sh.*mag.service.impl.*.*(..))" />
		<aop:advisor advice-ref="txAdvice" pointcut-ref="txMagPoint" />
	</aop:config>

	<!-- 声明式事务管理,第2种方式,使用@Transactional管理业务逻辑事务,见我的文章mybatis整合spring https://blog.csdn.net/IT_CREATE/article/details/85329007-->
	<!-- 开启事务的注解支持 -->
	<!-- <tx:annotation-driven transaction-manager="transactionManager"/> -->

	<!-- 第7步,开启切面动态代理支持 -->
	<aop:aspectj-autoproxy></aop:aspectj-autoproxy>



</beans>

mysql.properties文件:(连接数据库要要用到的信息)

jdbc.driver=org.gjt.mm.mysql.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF8&allowMultiQueries=true
jdbc.username=root
jdbc.password=1234

 

maven的pom.xml配置文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.gezhi</groupId>
	<artifactId>sh</artifactId>
	<version>1.0</version>
	<packaging>jar</packaging>

	<name>sh</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<junit.version>4.12</junit.version>
		<log4j.version>1.2.17</log4j.version>
		<spring.version>4.3.14.RELEASE</spring.version>
		<hibernate.version>4.3.11.Final</hibernate.version>
		<aspect.version>1.8.9</aspect.version>
		<mysql.version>5.1.38</mysql.version>
	</properties>


	<dependencies>
	
		<!-- 引入第3方的切面框架AspectJrt的相关JAR文件 -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${aspect.version}</version>
		</dependency>

		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>${aspect.version}</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.version}</version>
		</dependency>

		<!-- 导入spring容器相关JAR文件 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
		
		
		<!-- 导入spring容器整合ORM框架的相关JAR文件 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<!-- 引入spring框架兼容Junit单元测试框架的相关JAR包 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
			<scope>test</scope>
		</dependency>

		<!-- 导入junit单元测试框架JAR包 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>


		<!-- 导入LOG4J日志框架JAR包 -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>${log4j.version}</version>
		</dependency>

		<!-- 导入hibernate持久层框架JAR包 -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>${hibernate.version}</version>
		</dependency>


		<!-- 导入hibernate持久层框架的C3P0连接池JAR包 -->

		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-c3p0</artifactId>
			<version>${hibernate.version}</version>
		</dependency>

	</dependencies>

	<build>
		<pluginManagement>
			<!-- 配置maven 在构建项目时,采用相关插件 -->
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.8.0</version>
					<configuration>
						<source>1.8</source>
						<target>1.8</target>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值