spring与hibernate整合配置基于Annotation注解方式管理实务
1、配置数据源
数据库连接基本信息存放到properties文件中,因此先加载properties文件
<!-- jdbc连接信息 -->
<context:property-placeholder
location="classpath:io/shuqi/ssh/spring/transactionalAnnotation/jdbc.properties"/>
使用DBCP数据源配置xml如下
<!-- dbcp数据源配置 -->
<bean id="dbcpDataSources" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="username" value="${jdbc.user}" />
<property name="password" value="${jdbc.password}" />
<property name="url" value="${jdbc.url}" />
<property name="initialSize" value="${jdbc.initPoolSize}"></property>
<property name="maxOpenPreparedStatements" value="${jdbc.maxPoolSize}"></property>
</bean>
使用C3P0数据源配置
<!-- c3p0数据源配置 -->
<bean id="c3p0DataSources" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}" />
<property name="user" value="${jdbc.user}" />
<property name="password" value="${jdbc.password}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
</bean>
2、配置Hibernate的sessionFactory
hibernate3的sessionFactory有两种方式配置,分别是org.springframework.orm.hibernate3.LocalSessionFactoryBean基于*.hbm.xml 与org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean 基于 JPA注解方式的配置
- 使用 org.springframework.orm.hibernate3.LocalSessionFactoryBean的方式
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
p:dataSource-ref="c3p0DataSources">
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<!-- 使用通配符 Resources -->
<property name="mappingLocations">
<list>
<value>classpath:io/shuqi/ssh/spring/transactionalAnnotation/hibernate3/*.hbm.xml</value>
</list>
</property>
</bean>
使用通配符的方式(*.hbm.xml)
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" p:dataSource-ref="c3p0DataSources">
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<!-- 使用逐一列出配置文件的方式 -->
<property name="mappingResources">
<list><value>io/shuqi/ssh/spring/transactionalAnnotation/hibernate3/User.hbm.xml</value>
</list>
</property>
</bean>
使用逐一列出配置Mapping文件的方式
2.使用org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean的方式
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
p:dataSource-ref="c3p0DataSources">
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>io.shuqi.ssh.spring.transactionalAnnotation.hibernate3.User</value>
</list>
</property>
</bean>
Hibernate3使用注解的反射,并逐一列出类的方式
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
p:dataSource-ref="c3p0DataSources">
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="packagesToScan" value="io.shuqi.ssh.spring.transactionalAnnotation.hibernate3"/>
</bean>
Hibernate基于注解配置,使用包扫描的方式
Hibernate4的sessionFactory与Hibernate3的配置差不多,只是Hibernate3的两个类在Hibernate4变为了一个类(org.springframework.orm.hibernate4.LocalSessionFactoryBean)
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
p:dataSource-ref="c3p0DataSources">
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="packagesToScan" value="io.shuqi.ssh.spring.transactionalAnnotation.hibernate4"/>
</bean>
Hibernate4基于注解,并使用包扫描的方式
3、配置Spring的事务管理,将程序的事务管理交由Spring管理
<!-- 将事务交由Spring管理 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager"
p:sessionFactory-ref="sessionFactory"/>
4、启用Spring的@Transaction注解
<!-- 开启spring注解驱动,及@Transaction注解的开启 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
5、项目的maven依赖
<properties>
<spring.version4.1>4.1.6.RELEASE</spring.version4.1>
<spring.version4>4.0.9.RELEASE</spring.version4>
<spring.version3>3.2.13.RELEASE</spring.version3>
<hibernate4.version>4.3.10.Final</hibernate4.version>
<hibernate3.version>3.6.10.Final</hibernate3.version>
<!-- 软件版本配置 -->
<junit.version>4.12</junit.version>
<jackjson.version>2.5.4</jackjson.version>
<spring.version>4.1.6.RELEASE</spring.version>
<jstl.version>1.2</jstl.version>
<el.version>1.1.2</el.version>
<c3p0.version>0.9.5</c3p0.version>
<dbcp.version>2.1</dbcp.version>
<mysql.version>5.1.35</mysql.version>
<hibernate.version>3.6.10.Final</hibernate.version>
<javassist.version>3.13.0-GA</javassist.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- 测试时依赖包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version4.1}</version>
<scope>test</scope>
</dependency>
<!-- Spring 核心包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- c3p0数据源 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0.version}</version>
</dependency>
<!-- dbcp数据源 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>${dbcp.version}</version>
</dependency>
<!-- mysql 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- hibernate3.6.10依赖 -->
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>${javassist.version}</version>
</dependency>
</dependencies>
maven依赖
spring与hibernate整合配置基于Annotation注解方式管理实务的更多相关文章
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring声明式事务管理(基于Annotation注解方式实现)
在 Spring 中,除了使用基于 XML 的方式可以实现声明式事务管理以外,还可以通过 Annotation 注解的方式实现声明式事务管理. 使用 Annotation 的方式非常简单,只需要在项目 ...
- Hibernate 零配置之Annotation注解
JPA规范推荐使用Annotation来管理实体类与数据表之间的映射关系,从而避免同时维护两份文件(Java 实体类 和 XML 映射文件),将映射信息(写在Annotation中)与实体类集中在一起 ...
- 基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)
1.导入jar watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400 ...
- 基于注解Spring MVC综合Hibernate(需要jar包,spring和Hibernate整合配置,springMVC组态,重定向,)批量删除
1.进口jar 2.web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app ver ...
- Spring Boot CRUD+分页(基于Mybatis注解方式)
步骤一:关于Mybatis Mybatis 是用来进行数据库操作的框架.其中分页使用Mybatis中的PageHelper插件. Mybatis与hibernate对比: 1.hibernate是一个 ...
- Spring+Hibernate整合配置 --- 比较完整的spring、hibernate 配置
Spring+Hibernate整合配置 分类: J2EE2010-11-25 17:21 16667人阅读 评论(1) 收藏 举报 springhibernateclassactionservlet ...
- 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)
轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...
- 框架篇:Spring+SpringMVC+hibernate整合开发
前言: 最近闲的蛋疼,搭个框架写成博客记录下来,拉通一下之前所学知识,顺带装一下逼. 话不多说,我们直接步入正题. 准备工作: 1/ IntelliJIDEA的安装配置:jdk/tomcat等..(本 ...
- spring+springmvc+hibernate 整合
三大框架反反复复搭了很多次,虽然每次都能搭起来,但是效率不高.最近重新搭了一次,理顺了思路,整理了需要注意的地方,分享出来. 工具:Eclipse(jdk 1.7) spring和hibernate版 ...
随机推荐
- 网上B2C书城,1.0javaWEB版!!好几天没更新了,都忙着做那个网站了~
惯例帮师傅打个广告www.java1234.com,从基础学习java WEB! 从最初的构思,到一点点功能的实现,真是不容易啊,由于自己没有项目经验,完全依靠自己的感觉,以及自己琢磨出来的思路来写, ...
- nodejs 下载网页及相关资源文件
功能其实很见简单,通过 phantomjs.exe 采集 url 加载的资源,通过子进程的方式,启动nodejs 加载所有的资源,对于css的资源,匹配css内容,下载里面的url资源 当然功能还是很 ...
- linux命令学习01-mkdir
1.环境说明 centos6.7,2.6.32-573.el6.x86_64 2.man mkdir NAM mkdir - make directories SYNOPSI ...
- codeforces 552 E. Vanya and Brackets 表达式求值
题目链接 讲道理距离上一次写这种求值的题已经不知道多久了. 括号肯定是左括号在乘号的右边, 右括号在左边. 否则没有意义. 题目说乘号只有15个, 所以我们枚举就好了. #include <io ...
- python 日期、时间戳转换
获取当前日期: from datetime import datetime IN:datetime.now() OUT:datetime(2016,10,19,6,51,21,72341) 转化为字符 ...
- 全角和半角相互转换(C语言实现)
目前,我们接触的汉字编码主要包括GBK和GB2312.其中,GB2312又称国标码,它是一个简化字的编码规范,也包括其他的符号.字母.日文假名等,共7445个图形字符,其中汉字占6763个.我们平时说 ...
- MiniSD卡是什么
Mini SD卡比目前主流的普通SD卡(如DC或DV上使用的SD卡),在外形上更加小巧,重量仅有3克左右,体积只有21.5x20x1.4mm,比普通SD卡足足节省了60%的空间.别小看这么小的外形,它 ...
- 10要点解决IE6兼容性问题
1.使用声明 你必须经常在html网页头部放置一个声明,推荐使用严格的标准.例如 <!DOCTYPEHTMLPUBLIC“-//W3C//DTDHTML4.01//EN” "htt ...
- iPhone 禁止 Safari 页面上下拖动反弹
解决方法: <body ontouchmove="event.preventDefault()" > 手机端设置: <meta content=&q ...
- BCGControlBar使用方法(转)
一. 关于BCGControlBar. BCGControlBar是一个基于MFC的扩展库,您可以通过完全的用户化操作构成一些类似于Microsoft Office 2000/XP/2003和Mi ...