SSH 整合及注意事项
Spring 整合 hibernate 配置
1. spring 配置管理datasource 及 sessionFactory
1) 引入相关jdbc配置文件。
<context:property-placeholder location="classpath:jdbc.properties" />
2) 配置datasource
<bean id="dataSourceUser" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${user.jdbc.driver}" />
<property name="jdbcUrl" value="${user.jdbc.url}" />
<property name="user" value="${user.jdbc.user}" />
<property name="password" value="${user.jdbc.password}" />
<!--连接池中保留的最大连接数。默认值: 15 -->
<property name="maxPoolSize" value="500"/>
<!-- 连接池中保留的最小连接数,默认为:3-->
<property name="minPoolSize" value="2"/>
<!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3-->
<property name="initialPoolSize" value="2"/>
<!--如果为false,则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常,但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认: false-->
<property name="breakAfterAcquireFailure" value="false"/>
<!--每60秒检查所有连接池中的空闲连接。默认值: 0,不检查 -->
<property name="idleConnectionTestPeriod" value="60"/>
<!--c3p0全局的PreparedStatements缓存的大小。如果maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0-->
<property name="maxStatements" value="100"/>
<!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。默认值: 0 -->
<property name="maxStatementsPerConnection" value="0"/>
<!-- ... -->
</bean>
3) 配置sessionFactory
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<!-- 注入连接池 -->
<property name="dataSource" ref="dataSource" /> <!--可由
<!-- 配置Hibernate的其他的属性 -->
<property name="hibernateProperties">
<props>
<!-- <prop key="current_session_context_class">thread</prop><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> -->
<prop key="hibernate.dialect">org.shenyundata.cn.base.BlobMySQLDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.format_sql">false</prop>
<!-- ... -->
</props>
</property>
<!-- 配置映射的注解的实体类的包 -->
<property name="packagesToScan">
<list>
<value>org.shenyundata.cn.model</value>
</list>
</property>
</bean>
4. 如果使用hibernateTemplate, 需要相关配置
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
5. 事务管理器 相关配置
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
6. 事务管理器的切面逻辑配置
<tx:advice id="advice" transaction-manager="transactionManager">
<!-- 配置拦截 -->
<tx:attributes>
<tx:method name="get*" />
<tx:method name="*" rollback-for="Throwable" />
</tx:attributes>
</tx:advice>
<!-- 配置拦截规则 -->
<aop:config>
<!-- 拦截规则 -->
<aop:pointcut id="myPointcut"
expression="execution(* org.***.cn.service.*.*(..)) or execution (* org.***.cn.task.*.*(..)) " />
<aop:advisor advice-ref="advice" pointcut-ref="myPointcut" />
</aop:config>
注意事项
1.spring 负责 管理service 及dao 的生成。
2.action的生成 由struts2 spring 的plugin生成,不受spring 的管理。
3. OpenSessionInviewFilter 注意事项:
1). 必须配置在struts2 filter前面。
2). Filter 需要 sessionfactory bean,如果需要改名 需要在filter配置信息中加入 param-name: sessionfactorybeanname param-value
3). 如果不配置 transaction,会出异常 InvaliddataaccessapiUsageException write operations are not allowed **** readonly, 所以记得配置好事务管理器
7. 相关annotation 配置
<context:annotation-config />
<!-- scanning package -->
<context:component-scan base-package="com.****" />
8.如果需要使用aspectj语法,定义切面类逻辑,需要下面的配置
<aop:aspectj-autoproxy /> AOP annotation语法支持 ,不太重要
AOP xml配置 (重要) 见第6点。
附相关jar包:
数据库包及 日志的jar包会根据各公司的情况 略有不同。
|
Struts.2.1.6 Spring 2.5.6 hibernate3.3.2 整合 |
|
Antlr-2.7.6.jar |
|
AspectJ.jar |
|
Aspectjweaver.jar |
|
Cglib-nodep-2.1.3.jar |
|
Common-annotations.jar |
|
Commons-collections-3.1.jar |
|
Commons-fileupload-1.2.1.jar |
|
Commons-io-1.3.2.jar |
|
Commons-logging-1.1.1.jar |
|
Dom4j-1.6.1.jar |
|
Ejb3-persistence.jar |
|
Freeemarker-2.3.13.jar |
|
Hibernate3.jar |
|
Hibernate-annotations.jar |
|
Hibernate-common-annotations.jar |
|
Javaassist-3.9.0.GA.jar |
|
Jta-1.1.jar |
|
Junit4.5.jar |
|
Mysql 驱动包 |
|
Ognl-2.6.11.jar |
|
Slf4j-api-1.5.8.jar |
|
Slf4j-nop-1.5.8.jar |
|
Spring.jar |
|
Struts2-core-2.1.6.jar |
|
Xwork-2.1.2.jar |
|
Commons-dbcp.jar |
|
Commons-pool.jar |
|
Struts-spring-plugin2.1.6.jar |
个人整理,如有错误,欢迎各位留言告知,谢谢!
SSH 整合及注意事项的更多相关文章
- 【Java EE 学习 67 下】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】
一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar ...
- Spring自学教程-ssh整合(六)
以下是本人原创,如若转载和使用请注明转载地址.本博客信息切勿用于商业,可以个人使用,若喜欢我的博客,请关注我,谢谢!博客地址 感谢您支持我的博客,我的动力是您的支持和关注!如若转载和使用请注明转载地址 ...
- 三大框架SSH整合
三大框架SSH整合 -------------------------------Spring整合Hibernate------------------------------- 一.为什么要整合Hi ...
- SSH整合(struts2.3.24+hibernate3.6.10+spring4.3.2+mysql5.5+myeclipse8.5+tomcat6+jdk1.6)
终于开始了ssh的整合,虽然现在比较推崇的是,ssm(springmvc+spring+mybatis)这种框架搭配确实比ssh有吸引力,因为一方面springmvc本身就是遵循spring标准,所以 ...
- SSH整合之全注解
SSH整合之全注解 使用注解配置,需要我们额外引入以下jar包
- 用ssh整合时,用sessionfactory的getCurrentSession()获取不到session
在用ssh整合时,一开始用的是getCurrentSession(),获取当前线程上的session,但是总是抛异常,不能获取. 后来用sessionfactory的openSession(),但是, ...
- SSH整合(1)异常
信息: No Spring WebApplicationInitializer types detected on classpath 十二月 01, 2016 10:06:12 下午 org.apa ...
- Spring(八)SSH整合简述
一.Spring与Struts2的整合 1.1.整合步骤 1.2.配置web.xml 1.3.配置spring配置文件applicationContext.xml 1.4.配置struts配置文件 1 ...
- SSH整合之spring整合hibernate
SSH整合要导入的jar包: MySQL中创建数据库 create database ssh_db; ssh_db 一.spring整合hibernate带有配置文件hibernate.cfg.xml ...
随机推荐
- Oracle EBS Form Builder使用Java beans创建窗体
最近有个项目,需要研究一下Oracle的E-Business Sutie(EBS),对于以前没接触此套件的我来说,简直太痛苦了.在网上找了一堆资料,试着进行Form二次开发,也遇到各类奇葩问题.目前遇 ...
- CSS基础教程 -- 媒体查询屏幕适配
响应式布局 Media Query 的使用方法 在上例中, 我们使用Media Queries来根据3种不同尺寸的窗口使用3种不同的样式.通过不同的媒体类型和条件定义样式表规则,媒体查询让CSS可以更 ...
- 每日一博 | 用 Ionic2 创建 App 启动页滑动欢迎界面
原文 https://my.oschina.net/qinphil/blog/777787 效果如下,图片来自网络 本文例子和上图稍有不同,主要功能如下: 每滑动一下展示一张全屏图片: 滑动到最后一 ...
- 闲聊桌面应用开发[Win16->Win32->ATL/WTL/MFC->WinForm->WPF/Silverlight/WinRT]
闲来无聊,正好小组人员讨论到桌面的开发,那把笔者接触的WIndows平台下的几个主要的发展过程聊一聊. 主要从概述,参考资料,图书等几个方面说起. 所有的界面开发都会涉及如下的几个方面的内容: v 控 ...
- iOS runtime的理解和应用
项目中经常会有一些的功能模块用到runtime,最近也在学习它.对于要不要阅读runtime的源码,我觉得仅仅是处理正常的开发,那真的没有必要,只要把常用的一些函数看下和原理理解下就可以了. 但是如果 ...
- 【代码笔记】iOS-屏幕旋转
代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. se ...
- iOS 教你如何实现手势密码
本次讲的手势密码,是在九个按键上实现的,这里讲的是手势密码的基本实现和效果 同样先上效果图 其实就是对画图功能的一个实现,再加上手势操作结合起来 屏幕宽度高度,方便下面操作,不做解释 #define ...
- msbuild ConfuserEx.Build 加密
https://www.nuget.org/packages/ConfuserEx.Build/ <?xml version="1.0" encoding="utf ...
- 这个错误,每个ScrumMaster都犯过
[小编]ScrumMaster要授之以渔,还是授之以鱼?从04年开始接触XP,到08年自己的团队开始提出敏捷的概念,再到10年接受ScrumMaster培训:在刚开始做ScrumMaster的一段时间 ...
- (视频) 《快速创建网站》1. 网站管理平台WordPress & 微软Azure 云计算简介
网站并不神秘,过节了,在家闲的没事的,自己建个网站玩玩吧.每段视频不超过15分钟,地铁/公交/睡前/醒来看一段,几天之后变身建站专家,找老板加薪去! 在普通人眼里,创建网站是专业开发人员和IT工程师才 ...