OA学习笔记-006-SPRING2.5与hibernate3.5整合

一、为什么要整合

1,管理SessionFactory实例(只需要一个)
2,声明式事务管理

spirng的作用

IOC 管理对象..
AOP 事务管理..

二、整合步骤

1.整合sessionFactory

在applicationContext.xml添加

 1 <!-- 导入外部的properties文件 -->
 2     <context:property-placeholder location="classpath:jdbc.properties"/>
 3 
 4     <!-- 配置SessionFactory -->
 5     <!-- bean默认是单例的 -->
 6     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
 7         <!-- 指定hibernate的配置文件位置 -->
 8         <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
 9         <!-- 配置c3p0数据库连接池 -->
10         <property name="dataSource">
11             <!-- 因为连接信息只有连接池用,所以配置在匿名的bean中 -->
12             <bean class="com.mchange.v2.c3p0.ComboPooledDataSource">
13                 <!-- 数据连接信息 -->
14                 <property name="jdbcUrl" value="${jdbcUrl}"></property>
15                 <property name="driverClass" value="${driverClass}"></property>
16                 <property name="user" value="${user}"></property>
17                 <property name="password" value="${password}"></property>
18                 <!-- 其他配置 -->
19                 <!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
20                 <property name="initialPoolSize" value="3"></property>
21                 <!--连接池中保留的最小连接数。Default: 3 -->
22                 <property name="minPoolSize" value="3"></property>
23                 <!--连接池中保留的最大连接数。Default: 15 -->
24                 <property name="maxPoolSize" value="5"></property>
25                 <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
26                 <property name="acquireIncrement" value="3"></property>
27                 <!-- 控制数据源内加载的PreparedStatements数量。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 -->
28                 <property name="maxStatements" value="8"></property>
29                 <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0 -->
30                 <property name="maxStatementsPerConnection" value="5"></property>
31                 <!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
32                 <property name="maxIdleTime" value="1800"></property>
33             </bean>
34         </property>
35     </bean>

 

2.配置声明式事务管理

在applicationContext.xml添加

1     <!-- 配置声明式事务管理(采用注解的方式,方便)-->
2     <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
3         <property name="sessionFactory" ref="sessionFactory"></property>
4     </bean>
5     <tx:annotation-driven transaction-manager="txManager"/>

 

3.测试

TestService.java

 1 @Service("testService")
 2 public class TestService {
 3 
 4     @Resource
 5     private SessionFactory sessionFactory;
 6 
 7     @Transactional
 8     public void saveTwoUsers() {
 9         Session session = sessionFactory.getCurrentSession();
10 
11         session.save(new User("李白"));
12         //int a = 1 / 0; // 这行会抛异常
13         session.save(new User("杜甫"));
14     }
15 }

 

TestAction.java

 1 //@Component("testAction")
 2 //@Service
 3 //@Repository
 4 @Controller("testAction")
 5 @Scope("prototype")
 6 public class TestAction extends ActionSupport {
 7 
 8     @Resource
 9     private TestService testService;
10     
11     @Override
12     public String execute() throws Exception {
13         System.out.println("---> TestAction.execute()");
14         testService.saveTwoUsers();
15         return "success";
16     }
17 }

3.SpringTest.java

 1 public class SpringTest {
 2 
 3     private ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
 4 
 5     @Test
 6     public void testBean() throws Exception {
 7         TestAction testAction = (TestAction) ac.getBean("testAction");
 8         System.out.println(testAction);
 9     }
10 
11     // 测试SessionFactory
12     @Test
13     public void testSessionFactory() throws Exception {
14         SessionFactory sessionFactory = (SessionFactory) ac.getBean("sessionFactory");
15         System.out.println(sessionFactory);
16     }
17 
18     // 测试事务
19     @Test
20     public void testTransaction() throws Exception {
21         TestService testService = (TestService) ac.getBean("testService");
22         testService.saveTwoUsers();
23     }
24 }

 

4.User.hbm.xml  

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="cn.itcast.oa.domain">
 7 
 8     <class name="User" table="itcast_user">
 9         <id name="id">
10             <generator class="native"/>
11         </id>
12         <property name="name" />
13     </class>
14     
15 </hibernate-mapping>

 

转载于:https://www.cnblogs.com/shamgod/p/5225454.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSP+Tomcat+SQL Server 2000+JDBC实现合同信息管理系统

导读:随着信息科学技术的飞速发展,人们逐渐意识到对信息管理软件的运用可以使日常工作更加方便、快捷和高效。论文详细论述了公司合同管理系统的开发设计过程。软件采用JSP开发技术,Tomcat作容器, SQL Server 2000作数据库管理系统,实现了创建合同、修改合同、删除合同、合…

使用Chronicle Wire将YAML连接到文件或网络

总览 Chronicle Wire旨在在简化开发和加快调试方面获得文本协议的好处&#xff0c;但能够在不更改代码的情况下切换到性能更高且更小的二进制协议。 在这篇文章中 &#xff0c;我研究了使用基于YAML的文本格式进行序列化&#xff0c;反序列化可能会实现的性能。 不错的功能之一…

JSP+JDBC+XML+mysql实现企业电子投票系统

导读:企业电子投票系统主要用来统计网站用户对某个主题或热门话题的意见。决策者通过这些统计数据做出相应的决策。企业电子投票系统是一般网站必备的程序之一,如果网站开发者想了解用户对该网站的意见和建议。他可以设计这样一个投票主题:你认为该网站如何?(A.很好 B.一般…

冒泡排序算法。

冒泡排序算法 题目&#xff1a; 给定7个int类型的数&#xff0c;用冒泡排序实现出来。 code: public class Maopaopaixu { public static void fun() { int arr[] {9,8,6,1,5,3,2}; System.out.println("数组排序前的顺序为:"); for(in…

matlab 无向拓扑图,无向图绘画树状拓扑图算法

基于目前Network项目需要&#xff0c;研究相关树形算法该需求难点如下&#xff1a;1、目前拓扑图是无向图&#xff0c;而树大多数都是基于有向图来画的&#xff0c;无法确定根节点2、网络拓扑中存在回环问题&#xff0c;导致链路可能会存在重叠问题针对问题1&#xff0c;目前根…

Java Mail+MYSQL+Tomcate+jsp实现企业快信系统

导读:首先对企业快信的开发进行了较深入的研究,然后对短信发送与邮件发送原理进行了介绍,接下来对系统的概要设计、功能模块、数据库设计,以及名片夹管理功能与邮件发送功能的具体实现作了细致阐述,最后是系统效果的展示。企业快信系统是一个集短信与邮件为一体的移动商务…

SQL存储过程分页(通用的拼接SQL语句思路实现)

多表通用的SQL存储过程分页 案例一&#xff1a; USE [Community] GO/****** Object: StoredProcedure [dbo].[Common_PageList] Script Date: 2016/3/8 13:44:58 ******/ SET ANSI_NULLS ON GOSET QUOTED_IDENTIFIER ON GOCREATE PROCEDURE [dbo].[Common_PageList] ( tab …

odbc连接oracle失败,大神解答win7系统ODBC无法连接ORACLE的处理方案

随着电脑的使用率越来越高&#xff0c;我们有时候可能会遇到win7系统ODBC无法连接ORACLE问题&#xff0c;如果我们遇到了win7系统ODBC无法连接ORACLE的问题&#xff0c;要怎么处理win7系统ODBC无法连接ORACLE呢&#xff1f;我们只用1)操作系统是Win7 x64&#xff0c;客户端是Or…

spring-mvc教程_使用MVC模式制作游戏-教程和简介

spring-mvc教程游戏开发中一种有用的体系结构模式是MVC&#xff08;模型视图控制器&#xff09;模式。 它有助于分离输入逻辑&#xff0c;游戏逻辑和UI&#xff08;渲染&#xff09;。 在任何游戏开发项目的早期阶段&#xff0c;它的用途很快就会被注意到&#xff0c;因为它可以…

web前端开发需要学什么(包含前端学习路线)

前端开发&#xff0c;做到后面&#xff0c;是可以走很多方向的&#xff1b;但是要保证后期的平滑过度&#xff0c;前期还是要把一些必须的知识搞扎实的&#xff1b;web前端开发需要学什么环境搭建前端环境很好搭建&#xff0c;编辑器浏览器即可。浏览器推荐使用 Chrome行业内主…

2015年必火的五个Html5移动开发工具推荐

NO.1 DCloudHBuilder:基于HTML5开发工具 中文官网&#xff1a;http://www.dcloud.io/ DCloudHBuilder:基于HTML5开发工具是当前最快的HTML开发工具&#xff0c;强大的代码助手帮你快速完成开发&#xff0c;最全的语法库和浏览器兼容 性数据让浏览器碎片化不再头痛&#xff0c…

oracle 库存管理系统,库存管理系统

内容介绍原文档由会员 刘阳 发布库存管理系统页数 14 字数 9186[摘要]库存管理系统是生产、计划和控制的基础。本系统通过对仓库、货位等帐务管理及入&#xff0f;出库类型、入&#xff0f;出库单据的管理&#xff0c;及时反映各种物资的仓储、流向情况&#xff0c;为生产管理和…

想当程序员,如何判断自己是否适合当前端程序员?

说在前面&#xff1a;有粉丝提问说自己并不确定学前端&#xff0c;因为自己还没有工作&#xff0c;想做程序员&#xff0c;想问问做哪个方向比较有前途&#xff1b; 有两三个小伙伴这么问的&#xff0c;感觉很有意义&#xff0c;拿出来单独说说比较好。 目录 程序员有哪些选择&…

从WildFly 9(子系统)中运行OkHttpClient

几天前&#xff0c; WildFly 9发布了&#xff0c;可以肯定的重点之一是Undertow Web子系统中对HTTP / 2.0的支持。 由于Hawkular最近已开始使用WildFly 9&#xff08;从8.2开始&#xff09;作为其基础服务器&#xff0c;因此尝试将http2用于从Hawkular-Wildfly-Monitor客户端到…

oracle19c方言,JFinal框架操作oracle数据库

JFinal框架操作oracle数据库&#xff0c;需要在configPlugin()方法中配置链接oracle数据库的相关配置配置JFinal数据库操作插件&#xff0c;configPlugin方法这里我加载jdbc.properties配置文件实在configConstant加载的Overridepublic void configConstant(Constants me) {loa…

个税社保

资料来源&#xff1a;http://finance.qq.com/cross/20160218/H9cM96A8.html?pgv_refaio2015&ptlang2052转载于:https://www.cnblogs.com/weikang/p/5200832.html

前端程序员如何选择适合自己的培训机构

web前端开发培训哪家好这个主要是根据自己的情况来选择&#xff0c;本篇文章主要分享怎么选择适合自己的培训机构市场上有哪些培训机构以及所在位置既然关心哪家培训机构好&#xff0c;基本都是有报班学习的意向&#xff0c;所以就不多说自学和报班的区别了&#xff1b;我是不排…

linux c文件属性,【linux c learn 之stat】获取文件的属性

NAMEstat 获取文件属性这个函数位于头文件里函数原型&#xff1a;int stat(const char *path, struct stat *buf);參数&#xff1a;path 文件路径文件名称buf 指向buffer的指针返回值&#xff1a;-1 遇到错误0 成功返回函数作用&#xff1a;把path文件的信息拷贝到指…

!function(){}()

http://my.oschina.net/u/2331760/blog/468672?p{{currentPage1}} ( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法&#xff0c;最初我以为是一个括号包裹匿名函数&#xff0c;再在后面加个括号调用函数&#xff0c;最后达到函数定义后立…

altium designer 10哪个作者写的好 。

问题截图&#xff1a; 博主解答&#xff1a; 其实这种书籍基本内容都差不多&#xff0c;很多都是作者来回借鉴&#xff0c;我们能根据自己的需要学到知识即可。