- 浏览: 199642 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
star_qiong:
ftl 入门 -
star_qiong:
ftl 入门 -
star_qiong:
[b ][/b]
ftl 入门 -
boaixiaohai:
markvery good
Hibernate的八大类HQL查询集合 -
carolli:
huangyunbin 写道但是我的项目中没有配置-vm C: ...
eclipse maven plugin 安装设置
九:Spring与Struts,Hibernate的集成
target :目标
proxy :代理
transaction :事务
propagation :传播
schema :样式
advisor :顾问
目标
9.1:Spring与Hibernate的集成
9.1.1:使用Spring简化Hibernate编码
9.1.2:配置数据源和SessionFactory
9.2:使用Spring重新组装Web程序
9.2.1:使用Spring管理依赖关系
9.2.2:与Struts集成
9.3:声明式事务
9.3.1:应用系统中的事务管理
9.3.2:1.x的方式
9.3.3:Spring2.0的方式
小结:
目标
掌握Srping与Struts,Hibernate的集成(简化DAO层代码),管理依赖关系和事务,会使用Spring实现声明式事务。
9.1:Spring与Hibernate的集成
9.1.1:使用Spring简化Hibernate编码
BaseHibernateDAO实现过接口FwxxDAO,此时可以:继承自org.springframework.orm.hibernate3.support.HibernateDaoSupport并implements这个接口。代码示例:super.getHibernateTemplate().update(fwxx);
Spring为HibernateDaoSupport类提供了setSessionFactory方法,以此向DAO类注入SessionFactory。
9.1.2:配置数据源和SessionFactory
在配置文件中,需要定义一个SessionFactory Bean才能注入到DAO类中。
一:使用Spring提供的LocalSessionFactoryBean,传入一个Hibernate配置文件的位置。在开发阶段,生成新的实体类时会自动添加在Hibernate配置文件中,不用手动修改Spring的配置文件。缺点是:无法有效的和DataSource进行集成,故,在部署到“生产机”是,需采用另一种配置方法(二)。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<propery name="configLocation"><value>classpath:hibernate.cfg.xml</value></property>
</bean>
二:配置<bean id="dataSource"></bean>和<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"></bean>
注入:
<bean id="fwxxDAO" class="com.apatech.jb.dao.hibimpl.FwxxDaoHibImpl" ><property name="sessionFactory" ref="sessionFactory"/></bean>
9.2:使用Spring重新组装Web程序
9.2.1:使用Spring管理依赖关系
程序的依赖关系是:Action-->Biz-->DAO-->SessionFactory-->DataSource。使用Spring管理这些依赖关系,注入的方向刚好相反。(ds-->sf-->dao-->biz-->action)。
1),去掉直接实例化FwxxDAO接口实例的代码(解除biz对dao的依赖,做到“面向接口”)。
2),增加fwxxDAO属性的setter方法,方便注入。
3),到Spring配置文件中定义fwxxBizBean.
9.2.2:与Struts集成
Action类的实例由Struts创建,由于要使用Spring管理Action对Biz的依赖,Action类就要由Spring来创建。Struts可以以插件的方式扩展,可利用Spring提供的ContextLoadPlugin插件即可做到Spring与Struts的无缝集成。
1),在Struts配置文件中配置插件,
2),将Struts配置文件中Action类别都配置为“org.springframework.web.struts.DelegatingActionProxy”
3),在Spring配置文件中配置FwxxAction,注意:<bean>没有id属性,name属性的值要与struts配置中相应Action Bean的path属性一致。
9.3:声明式事务
9.3.1:应用系统中的事务管理
事务处理:
1,JDBC方式:将Connection(JDBC中,事务依附在Connection对象上)对象以参数的方式传来传去。(Connection在业务逻辑层或者表示层出现,破坏了三层结构的基本原则)
2,将业务逻辑层代码放到Dao层实现,Dao层依据业务逻辑创建方法,编写复杂的业务逻辑处理代码。(降低了软件的质量——质量是软件的生命线)
要保证自己的代码逻辑清晰,规范易读,不要抱着侥幸的心理破坏规矩。事务是系统开发过程的一个“方面”,散布在系统里,可以通过AOP技术将其放在一起是实现。
9.3.2:1.x的方式(分布式事务的配置方法)
Spring声明式事务(在配置文件中完成):1,声明一个事务管理器,需要注入sessionFactory属性;2,给需要事务的方法添加事务支持(与AOP的实现相似),首先定义xxxTarget,然后定义xxxBiz,其中,1),class属性为org.springframework.transaction.intercepor.TransactionProxyFactoryBean,2),将事务管理器(transactionManager)和代理对象(target)注入;3)对事务属性(transactionAttributes)进行声明。
(相关概念:Spring AOP的实现采用代理的方式,首先要定义被代理的对象,然后注入到代理类中)
相关代码:
1:
<bean id="fwxxBizTarget" class="com.aptech.jb.biz.impl.FwxxBizImpl">
<property name="fwxxDao" ref="fwxxDAO"/>
</bean>
<!--2.1:-->
<bean id="fwxxBiz" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<!--2.2:-->
<property name="transactionManager" ref="myHibTransactionManager"/>
<property name="target" ref="fwxxBizTarget"/>
<!--2.3:-->
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
解释:
事务属性的定义:<prop key="add*" >PROPAGATION_REQUIRED</prop>,key表示匹配方法的模式,可以使用'*'通配符,属性值有五个可选值,分别是:
propagation_required(传播_必需的):当前方法必须运行在一个事务环境中,如果一个现有事务正在运行中,该方法将运行在这个事务中,否则,就要开始一个新的事务;
propagation_mandatory(命令的; 强制的; 义务的):当前方法必须运行在一个事务上下文中,否则抛出异常;
propagation_never( 从不, 永不, 从来没有):当前方法不应该运行在一个事务中,否则就抛出异常;
propagation_requires_new:当前方法必须运行在自己的事务里;
propagation_supports:当前方法不需要事务处理环境,但如果有一个事务正在运行的话,这个方法也可以运行在这个事务里。
习惯:
业务逻辑层方法的事务属性设置为"propagation_required",若想提高效率,对不需要更改数据库数据的方法也可作如下配置:<prop key="*" >propagation_required,readonly</prop>,"*"表示匹配所有其他的方法,readOnly表示启用只读事务(数据库可以采取合理的优化措施避免不必要的操作)。
技巧(类似定义“基类”解决重复性编码的技巧):
定义“基类”,设置其abstract属性为true,表示不可以直接得到其实例,可以“继承”自这个基类,轻松定义多个业务逻辑Bean。(基类——abstract,子类中添加parent属性,并设置target属性)
9.3.3:Spring2.0的方式
对比1.x:1.x是一种“侵入式”的解决方案,只是没有侵入到程序代码中去而已(需要而外配置一个代理对象,原来的Bean的声明也要修改)。
优势:可以在配置代码不变的基础上给Bean的方法添加事务支持。
步骤:1,添2.0的Jar包(spring.jar,aspectjrt.jar,aspectjweaver.jar,cglib-nodep-2.1._3.jar);2,修改配置文件,增加常用命名空间的声明;重新启用项目,项目正常启动,表示项目中采用的Spring版本更新成功。
(直接添加Spring2.0的jar包河2.0风格的配置文件到项目即可)
2.0的配置:
1,通过<tx:advice>定义事务通知,需要指定一个事务管理器,然后在其属性中声明事务规则,含义与1.x类似。
2,定义切面(pointcut,即定义哪些方法应用这些规则)
<aop:pointcut id="bizMehtods" expression="execution(* com.appech.jb.biz.*.*(..))"/> 表示:在com.apetch.jb.biz包下所有的方法都应该应用事务规则。
3,将事务通知和切面组合
<aop:advisor advice-ref="txAdvice" pointcut-ref="bizMehtods"/>
成熟的三层架构+MVC的框架:Struts主持大局,Hibernate负责持久化工作,Spring管理组件间的依赖并提供事务支持,在稳定性和生产效率上具有极佳的平衡性。
小结:
Spring为Hibernate开发提供了良好的支持,可以大大简化Hibernate的编码。
在Spring配置文件定义dataSource,SessionFactory再注入到DAO中是开发中常用的做法。
Spring依赖注入在项目中用于管理程序间的依赖,使我们更容易做到面向接口编程。
Spring可以采用Struts插件的方式与Struts轻松集成。
Spring支持声明式事务,可以以不写一行程序代码的方式给系统增加事务支持。2.0的方式更为简洁,易懂。
target :目标
proxy :代理
transaction :事务
propagation :传播
schema :样式
advisor :顾问
目标
9.1:Spring与Hibernate的集成
9.1.1:使用Spring简化Hibernate编码
9.1.2:配置数据源和SessionFactory
9.2:使用Spring重新组装Web程序
9.2.1:使用Spring管理依赖关系
9.2.2:与Struts集成
9.3:声明式事务
9.3.1:应用系统中的事务管理
9.3.2:1.x的方式
9.3.3:Spring2.0的方式
小结:
目标
掌握Srping与Struts,Hibernate的集成(简化DAO层代码),管理依赖关系和事务,会使用Spring实现声明式事务。
9.1:Spring与Hibernate的集成
9.1.1:使用Spring简化Hibernate编码
BaseHibernateDAO实现过接口FwxxDAO,此时可以:继承自org.springframework.orm.hibernate3.support.HibernateDaoSupport并implements这个接口。代码示例:super.getHibernateTemplate().update(fwxx);
Spring为HibernateDaoSupport类提供了setSessionFactory方法,以此向DAO类注入SessionFactory。
9.1.2:配置数据源和SessionFactory
在配置文件中,需要定义一个SessionFactory Bean才能注入到DAO类中。
一:使用Spring提供的LocalSessionFactoryBean,传入一个Hibernate配置文件的位置。在开发阶段,生成新的实体类时会自动添加在Hibernate配置文件中,不用手动修改Spring的配置文件。缺点是:无法有效的和DataSource进行集成,故,在部署到“生产机”是,需采用另一种配置方法(二)。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<propery name="configLocation"><value>classpath:hibernate.cfg.xml</value></property>
</bean>
二:配置<bean id="dataSource"></bean>和<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"></bean>
注入:
<bean id="fwxxDAO" class="com.apatech.jb.dao.hibimpl.FwxxDaoHibImpl" ><property name="sessionFactory" ref="sessionFactory"/></bean>
9.2:使用Spring重新组装Web程序
9.2.1:使用Spring管理依赖关系
程序的依赖关系是:Action-->Biz-->DAO-->SessionFactory-->DataSource。使用Spring管理这些依赖关系,注入的方向刚好相反。(ds-->sf-->dao-->biz-->action)。
1),去掉直接实例化FwxxDAO接口实例的代码(解除biz对dao的依赖,做到“面向接口”)。
2),增加fwxxDAO属性的setter方法,方便注入。
3),到Spring配置文件中定义fwxxBizBean.
9.2.2:与Struts集成
Action类的实例由Struts创建,由于要使用Spring管理Action对Biz的依赖,Action类就要由Spring来创建。Struts可以以插件的方式扩展,可利用Spring提供的ContextLoadPlugin插件即可做到Spring与Struts的无缝集成。
1),在Struts配置文件中配置插件,
2),将Struts配置文件中Action类别都配置为“org.springframework.web.struts.DelegatingActionProxy”
3),在Spring配置文件中配置FwxxAction,注意:<bean>没有id属性,name属性的值要与struts配置中相应Action Bean的path属性一致。
9.3:声明式事务
9.3.1:应用系统中的事务管理
事务处理:
1,JDBC方式:将Connection(JDBC中,事务依附在Connection对象上)对象以参数的方式传来传去。(Connection在业务逻辑层或者表示层出现,破坏了三层结构的基本原则)
2,将业务逻辑层代码放到Dao层实现,Dao层依据业务逻辑创建方法,编写复杂的业务逻辑处理代码。(降低了软件的质量——质量是软件的生命线)
要保证自己的代码逻辑清晰,规范易读,不要抱着侥幸的心理破坏规矩。事务是系统开发过程的一个“方面”,散布在系统里,可以通过AOP技术将其放在一起是实现。
9.3.2:1.x的方式(分布式事务的配置方法)
Spring声明式事务(在配置文件中完成):1,声明一个事务管理器,需要注入sessionFactory属性;2,给需要事务的方法添加事务支持(与AOP的实现相似),首先定义xxxTarget,然后定义xxxBiz,其中,1),class属性为org.springframework.transaction.intercepor.TransactionProxyFactoryBean,2),将事务管理器(transactionManager)和代理对象(target)注入;3)对事务属性(transactionAttributes)进行声明。
(相关概念:Spring AOP的实现采用代理的方式,首先要定义被代理的对象,然后注入到代理类中)
相关代码:
1:
<bean id="fwxxBizTarget" class="com.aptech.jb.biz.impl.FwxxBizImpl">
<property name="fwxxDao" ref="fwxxDAO"/>
</bean>
<!--2.1:-->
<bean id="fwxxBiz" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<!--2.2:-->
<property name="transactionManager" ref="myHibTransactionManager"/>
<property name="target" ref="fwxxBizTarget"/>
<!--2.3:-->
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
解释:
事务属性的定义:<prop key="add*" >PROPAGATION_REQUIRED</prop>,key表示匹配方法的模式,可以使用'*'通配符,属性值有五个可选值,分别是:
propagation_required(传播_必需的):当前方法必须运行在一个事务环境中,如果一个现有事务正在运行中,该方法将运行在这个事务中,否则,就要开始一个新的事务;
propagation_mandatory(命令的; 强制的; 义务的):当前方法必须运行在一个事务上下文中,否则抛出异常;
propagation_never( 从不, 永不, 从来没有):当前方法不应该运行在一个事务中,否则就抛出异常;
propagation_requires_new:当前方法必须运行在自己的事务里;
propagation_supports:当前方法不需要事务处理环境,但如果有一个事务正在运行的话,这个方法也可以运行在这个事务里。
习惯:
业务逻辑层方法的事务属性设置为"propagation_required",若想提高效率,对不需要更改数据库数据的方法也可作如下配置:<prop key="*" >propagation_required,readonly</prop>,"*"表示匹配所有其他的方法,readOnly表示启用只读事务(数据库可以采取合理的优化措施避免不必要的操作)。
技巧(类似定义“基类”解决重复性编码的技巧):
定义“基类”,设置其abstract属性为true,表示不可以直接得到其实例,可以“继承”自这个基类,轻松定义多个业务逻辑Bean。(基类——abstract,子类中添加parent属性,并设置target属性)
9.3.3:Spring2.0的方式
对比1.x:1.x是一种“侵入式”的解决方案,只是没有侵入到程序代码中去而已(需要而外配置一个代理对象,原来的Bean的声明也要修改)。
优势:可以在配置代码不变的基础上给Bean的方法添加事务支持。
步骤:1,添2.0的Jar包(spring.jar,aspectjrt.jar,aspectjweaver.jar,cglib-nodep-2.1._3.jar);2,修改配置文件,增加常用命名空间的声明;重新启用项目,项目正常启动,表示项目中采用的Spring版本更新成功。
(直接添加Spring2.0的jar包河2.0风格的配置文件到项目即可)
2.0的配置:
1,通过<tx:advice>定义事务通知,需要指定一个事务管理器,然后在其属性中声明事务规则,含义与1.x类似。
2,定义切面(pointcut,即定义哪些方法应用这些规则)
<aop:pointcut id="bizMehtods" expression="execution(* com.appech.jb.biz.*.*(..))"/> 表示:在com.apetch.jb.biz包下所有的方法都应该应用事务规则。
3,将事务通知和切面组合
<aop:advisor advice-ref="txAdvice" pointcut-ref="bizMehtods"/>
成熟的三层架构+MVC的框架:Struts主持大局,Hibernate负责持久化工作,Spring管理组件间的依赖并提供事务支持,在稳定性和生产效率上具有极佳的平衡性。
小结:
Spring为Hibernate开发提供了良好的支持,可以大大简化Hibernate的编码。
在Spring配置文件定义dataSource,SessionFactory再注入到DAO中是开发中常用的做法。
Spring依赖注入在项目中用于管理程序间的依赖,使我们更容易做到面向接口编程。
Spring可以采用Struts插件的方式与Struts轻松集成。
Spring支持声明式事务,可以以不写一行程序代码的方式给系统增加事务支持。2.0的方式更为简洁,易懂。
发表评论
-
关于Spring属性编辑器的使用(总结1):
2011-02-18 05:27 904关于Spring属性编辑器的使用(总结1): 当要给bean ... -
Spring属性编辑器
2011-02-18 05:25 14231. 自定义属性编辑器类editors.DatePropery ... -
Spring依赖注入相关操作
2011-02-18 05:24 1031Spring依赖注入相关操作: 1,如何给Eclipse配置 ... -
八:使用Spring容器管理对象
2011-02-18 05:23 3630八:使用Spring容器管理 ... -
五:使用Hibernate完成对象持久化
2011-02-18 05:19 1515五:使用Hibernate完成对象持久化 transient ... -
七--Criteria查询代码
2011-02-18 05:16 1041七--Criteria查询代码: public List s ... -
七:Hibernate查询
2011-02-18 05:15 1570七:Hibernate查询 query : ... -
六:Hibernate的关联映射
2011-02-18 05:14 1502六:Hibernate的关联映射 ... -
hibernate--出错记录
2011-02-18 05:13 1092hibernate--出错记录: 1,通过工具类初始化数据库 ... -
hibernate_操作(配置,BaseHibernateDao)
2011-02-18 05:12 2790hibernate_操作(配置,BaseHibernateDa ... -
Hibernate的八大类HQL查询集合
2011-02-18 05:11 40573Hibernate的八大类HQL查询集合: 一:属性查询(S ... -
关于struts1转换器和插件
2011-02-18 05:09 1035关于struts1转换器和插件 <controlle ... -
struts1.x的标签使用
2011-02-18 05:08 1057struts1.x的标签使用: 1.我们可以通过strut框 ... -
Struts1.x_all_main
2011-02-18 05:07 920(Struts1.x版本的文本) Struts1.x的使用拓 ... -
struts1.x_i18n_Convert_Plugin
2011-02-18 05:06 1079struts1.x_i18n_Convert_Plugin ... -
struts2的部分笔记
2011-02-18 05:00 930struts2的部分笔记: 1, jdk是包含调试的,JRE ... -
SSH整合(低版本)
2011-02-18 04:31 1267SSH整合(低版本) 手动配置SSH 1. 添加Hiberna ...
相关推荐
C:\Struts,Hibernate,Spring集成开发宝典\Struts,Hibernate,Spring集成开发宝典光盘资料12.rar
C:\Struts,Hibernate,Spring集成开发宝典\Struts,Hibernate,Spring集成开发宝典光盘资料8.rar
C:\Struts,Hibernate,Spring集成开发宝典\Struts,Hibernate,Spring集成开发宝典光盘资料5.rar
C:\Struts,Hibernate,Spring集成开发宝典\Struts,Hibernate,Spring集成开发宝典光盘资料10.rar
C:\Struts,Hibernate,Spring集成开发宝典\Struts,Hibernate,Spring集成开发宝典光盘资料3.rar
C:\Struts,Hibernate,Spring集成开发宝典\Struts,Hibernate,Spring集成开发宝典光盘资料4.rar
C:\Struts,Hibernate,Spring集成开发宝典\Struts,Hibernate,Spring集成开发宝典光盘资料6.rar
C:\Struts,Hibernate,Spring集成开发宝典\Struts,Hibernate,Spring集成开发宝典光盘资料9.rar
C:\Struts,Hibernate,Spring集成开发宝典\Struts,Hibernate,Spring集成开发宝典光盘资料2.rar
C:\Struts,Hibernate,Spring集成开发宝典\Struts,Hibernate,Spring集成开发宝典光盘资料7.rar
C:\Struts,Hibernate,Spring集成开发宝典\Struts,Hibernate,Spring集成开发宝典光盘资料.11.rar
Spring集成struts以及hibernate jar包 所有的都在里面 需要的可以下载
《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。《Struts Hibernate ...
SSH集成 Struts+spring+hibernate集成SSH集成 Struts+spring+hibernate集成
struts2 spring hibernate集成 介绍上传下载。。
三大框架集成及两两集成的jar包,spring集成hibernate的jar包以及spring集成struts2的jar包已经单独打包
spring_struts_hibernate集成(干净版)
struts hibernate spring集成开发宝典光盘源码(一).rar
struts hibernate spring集成开发宝典光盘源码(二).rar
《Struts Hibernate Spring集成开发宝典》选取的实例繁简适中,与实际开发工作紧密结合,内容讲解由浅入深、循序渐进,可以满足不同层次读者的需求。 作者简介 陈天河,具有多年的软件开发经验,从事基于Java的Web...