`
chrnc
  • 浏览: 9606 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

hibernate做持久层,spring管理事物的架构方式

阅读更多
感觉好像所有的东西都是spring,spring ,spring....
的确,ormapping方面来说,hibernate在国内还算比较大众的一个框架,开发起来没风险,学习起来也有丰富的资源
就mvc来说呢,struts1是比较大众耳熟能详的,虽然就像jbuilder换了eclipse的芯,struts换了webwork的芯一样,虽然注定是呗淘汰的东西,但是就国内的新技术接受能力来看,struts1至少在国内还是有市场滴...
spring呢?太强的一个东西了,什么都能做...你像用它来做持久?没问题,想用它来做mvc?没问题,但是springMVC说实话有点玩不动..所以比较中立的开发方式(人家说的)是spring配合一个熟悉的 mvc框架,和orm框架,spring来“组装”,同时spring管理持久层的事物...




hibernate做持久层,spring管理事物的架构方式


<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> 


<!-- define basic datasource by apache dbcp 
虽然hibernate的高级版本已经明确的指出对dbcp不再提供支持,但是就开发阶段来说, 
使用dbcp配置数据源未曾不可..... 
--> 
<bean id="basicDataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
  <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
  <property name="url"             value="jdbc:mysql://localhost/schooldb?characterEncoding=utf-8" /> 
  <property name="username"        value="root" /> 
  <property name="password"        value="123456"/> 
</bean> 




<!-- define transaction aware data source proxy 
定义proxy,是spring感知数据源.... 
--> 
<bean id="transactionAwareDataSourceProxy" class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy"> 
  <constructor-arg> 
   <ref bean="basicDataSource" /> 
  </constructor-arg> 
</bean> 




<!-- define session factory by  transaction aware data source proxy 
使用spring support的sessionfactory 配合spring已经感知的数据源来定义sessionfactory... 
--> 
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
  <property name="dataSource"> 
   <ref bean="transactionAwareDataSourceProxy" /> 
  </property> 
  <property name="hibernateProperties"> 
   <props> 
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
    <prop key="hibernate.show_sql">false</prop> 
    <prop key="hibernate.cache.provider_class">org.hibernate.cache.OSCacheProvider</prop> 
   </props> 
  </property> 
  <property name="mappingResources"> 
   <list> 
    <value>mapping.hbm.xml</value> 
   </list> 
  </property> 
</bean> 






<!-- define dao by session factory 
定义 data access object , 
次类需要  扩展 org.springframework.orm.hibernate3.support.HibernateDaoSupport... 
--> 
<bean id="hibernateBasedDAO" class="com.gmail.chrnc0000.hibernate.HibernateBasedDAO"> 
  <property name="sessionFactory"> 
   <ref bean="sessionFactory" /> 
  </property> 
</bean> 



<!-- define spring  transaction manager by session factory --> 
<bean id="hibernateTransactionManager" 
  class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
  <property name="sessionFactory"> 
   <ref bean="sessionFactory" /> 
  </property> 
</bean> 


<!-- 
定义 spring interceptor ,并且对需要回滚的异常进行配置... 
--> 
<bean id="transactionProxyFactoryBean" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 
  <property name="transactionManager"> 
   <ref bean="hibernateTransactionManager" /> 
  </property> 
  <property name="transactionAttributes"> 
   <props> 
    <prop key="find*">PROPAGATION_REQUIRED</prop> 
    <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop> 
    <prop key="update*">PROPAGATION_REQUIRED</prop> 
    <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop> 
   </props> 
  </property> 
</bean> 





<!-- define service 
定义interceptor 配合的 service ... 
--> 
<bean id="transactionProxyBasedService" parent="transactionProxyFactoryBean"> 
  <property name="target"> 
   <bean class="com.gmail.chrnc0000.spring.TransactionProxyBasedService"> 
    <property name="hibernateBasedDAO"> 
     <ref local="hibernateBasedDAO" /> 
    </property> 
   </bean> 
  </property> 
</bean> 





<!-- export rmi service 
如果需要的话,把interceptor配合的service 暴露... 
--> 
<bean id="BLService" class="org.springframework.remoting.rmi.RmiServiceExporter"> 
  <property name="serviceName" value="BLService" /> 
  <property name="service" ref="transactionProxyBasedService" /> 
  <property name="serviceInterface" value="com.gmail.chrnc0000.IService" /> 
  <property name="registryPort" value="1299" /> 
</bean> 




</beans>
 


分享到:
评论
1 楼 zhuqimeng 2008-11-18  
小心,这种帖子很容易被人投新手帖的.

相关推荐

    用 Hibernate 和 Spring 开发持久层

    例如,使用Hibernate将持久性对象映射到关系数据库中,再通过Spring简化Hibernate的使用并提供声明式事务支持,从而构建了一个高效、可扩展的持久层架构。 #### 结论 总之,使用Hibernate和Spring开发持久层是一种...

    声明式事务控制spring+hibernate集成

    通过这个集成示例,开发者不仅可以了解如何将Spring的声明式事务管理与Hibernate的持久化能力结合,还能学习到如何组织和设计一个基于Spring的业务架构。这有助于提高代码的可维护性和可扩展性,降低系统复杂性,是...

    struts2 spring hibernate 整合架构

    Spring还提供了事务管理、数据源管理、JDBC抽象层等功能,以及对其他框架(如Hibernate)的集成支持。此外,Spring MVC是Spring提供的一个Web MVC框架,与Struts2类似,但更灵活和轻量级。 3. Hibernate:Hibernate...

    用Hibernate和Spring开发持久层

    本文将深入探讨如何结合使用Hibernate和Spring框架来构建高效、稳定的事务持久层。Hibernate作为一款流行的对象关系映射(ORM)工具,能够有效地简化Java应用与关系型数据库之间的交互;而Spring框架则以其强大的...

    SSH(Struts+Spring+Hibernate)三层架构.

    3) **业务层的类包**:包含Service类,它们实现了业务逻辑,是表现层和持久层的桥梁,通常由Spring管理并注入所需的DAO和实体类。 **核心的配置文件**: - `struts-config.xml`:Struts的配置文件,定义了Action和...

    spring hibernate mysql 事务实例

    Hibernate作为持久层框架,它自身也提供了事务管理,但通常在Spring环境下,我们会让Spring接管事务,以便在整个应用中保持一致的事务策略。Spring通过JDBC的DataSourceTransactionManager或Hibernate的...

    基于Struts和Hibernate和Spring的J2EE架构研究

    - **持久层**:为企业级应用提供了一个抽象层,便于管理与数据库的交互。 ##### 1.3 依赖注入框架Spring Spring是一个轻量级的Java应用框架,提供了以下关键特性: - **依赖注入**(Dependency Injection, DI):...

    基于Struts,Hibernate和Spring的J2EE架构研究

    Spring作为业务逻辑层,管理对象生命周期和事务处理。 #### 四、架构优缺点分析 **优点**: 1. **松耦合**:各个层之间通过接口通信,降低了层间的依赖程度。 2. **易维护**:清晰的分层设计有助于定位问题和进行...

    基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现(3)

    接下来,Hibernate作为持久层框架,负责对象关系映射(Object-Relational Mapping, ORM),简化了数据库操作。它允许开发者用面向对象的方式来处理数据库,避免了大量SQL代码的编写,提高了开发效率。Hibernate支持...

    springmvc+spring+hibernate

    Spring MVC 负责处理HTTP请求并将其路由到相应的控制器,Spring 提供了依赖注入(DI)和面向切面编程(AOP),简化了代码管理与模块化,而Hibernate则是持久层框架,负责数据库操作,提供了对象关系映射(ORM)功能...

    Struts2,Spring与Hibernate整合应用,学生成绩管理系统

    - **系统架构设计**:采用分层架构模式,包括表示层、业务逻辑层和数据持久层。每一层都有相应的package,如controller、service、dao等。 - **Spring配置**:在applicationContext.xml中定义UserLibrary,添加所有...

    struts2 + spring 3 + hibernate3.3整合实现图书馆管理管理

    Hibernate作为持久层框架,简化了数据库操作。它提供了对象关系映射(ORM)功能,将数据库中的表映射为Java对象。在图书馆管理系统中,可能有一个Book实体类,对应数据库中的书籍表。通过Hibernate,我们可以方便地...

    springmvc spring hibernate整合Demo

    Spring MVC、Spring 和 Hibernate 是Java开发中非常流行的三大框架,它们分别用于Web开发、依赖管理和持久层操作。这个"springmvc spring hibernate整合Demo"旨在帮助初学者理解如何将这三个框架协同工作,实现一个...

    基于struts+hibernate+spring的用户管理系统

    总结来说,这个用户管理系统展示了如何利用Struts进行请求调度和视图控制,Hibernate进行数据持久化,以及Spring进行组件管理和事务处理。通过这三个框架的协作,系统能够有效地组织和处理复杂的业务逻辑,同时也...

    hibernate+spring+oracle的MVC架构实例

    在Java EE应用开发中,构建基于Hibernate、Spring和Oracle的MVC架构实例是一个常见的实践,它可以帮助开发者实现高效、模块化的后端系统。这个实例主要涵盖了以下知识点: 1. **Model-View-Controller (MVC) 架构**...

    hibernate-4.3.5 与Spring(Spring MVC4.0.4)注解方式集成

    在IT领域,尤其是在Java开发中,整合Hibernate 4.3.5与Spring(Spring MVC 4.0.4)是一项常见的任务,目的是充分利用两者的优势,实现数据持久化和业务逻辑控制的高效配合。本示例源码展示了如何通过注解方式来完成...

    hibernate struts2 和spring的整合项目

    在这个项目中,Spring主要负责管理对象(包括Hibernate和Struts2中的组件),以及提供事务管理。核心概念包括IoC容器、Bean配置(beans.xml)、AOP代理、数据源和事务管理器。 4. **整合过程**: - 配置Spring:...

    hibernate与spring整合demo

    4. AOP集成:Spring的AOP可以与Hibernate的事务管理结合,提供更灵活的事务策略。 四、整合步骤 1. 引入依赖:在项目中添加Spring和Hibernate的依赖库。 2. 配置Hibernate:创建Hibernate的配置文件(如hibernate....

    hibernate+struts+spring网上选课系统

    它提供了一种声明式的方式管理事务,允许开发者使用HQL(Hibernate查询语言)或SQL进行数据查询。 2. **Struts**:是MVC(模型-视图-控制器)设计模式的实现,负责处理用户的请求,并将这些请求分发到相应的业务...

    struts+spring+hibernate三大框架整合

    Hibernate作为持久层框架,简化了数据库操作。整合这三个框架可以让应用的架构更加清晰,提高开发效率。 **Spring整合Struts** Spring整合Struts主要有三种方式: 1. **使用Spring的ActionSupport**:Action类...

Global site tag (gtag.js) - Google Analytics