class PersonDaoImpl extends HibernateDaoSupport
{
public void save(Person person) throws Exception {
//下面这行代码能看到回卷事务的效果
this.getHibernateTemplate().save(person);
//下面这行代码没有回卷的效果了,在spring整合的hibernate中,session每次都是自动提交事务。
//this.getSessionFactory().openSession().save(person);
int x = 3/0;
}
}
以上面代码为例,如果用的是Spring提供的Hibernate模板来保存,那么默认是开启事务的。在发生异常时,就会回滚事务。
但是若我们不使用Spring的模板,而是自己开启一个Session进行保存。这时和Hibernate的默认设置不同,Hibernate默认是不自动提交事务的,而交给Spring管理后,默认为每次都自动提交事务了。
因此,在Spring与Hibernate整合的项目中,应该都使用Spring提供的模板进行数据操作。才能有效的进行事务管理。
=========
Bean的作用域
singleton
在每个Spring IoC容器中一个bean定义只有一个对象实例。默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-init=“true”来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。如:
<bean id="xxx" class="cn.itcast.OrderServiceBean" lazy-init="true"/>
如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-init=“true“,如下:
<beans default-lazy-init="true" ...>
prototype
每次从容器获取bean都是新的对象
注入依赖对象
基本类型对象注入:
<bean id="orderService" class="cn.itcast.service.OrderServiceBean">
<constructor-arg index=“0” type=“java.lang.String” value=“xxx”/>//构造器注入
<property name=“name” value=“zhao/>//属性setter方法注入
</bean>
注入其他bean:
方式一
<bean id="orderDao" class="cn.itcast.service.OrderDaoBean"/>
<bean id="orderService" class="cn.itcast.service.OrderServiceBean">
<property name="orderDao" ref="orderDao"/>
</bean>
方式二(使用内部bean,但该bean不能被其他bean使用)
<bean id="orderService" class="cn.itcast.service.OrderServiceBean">
<property name="orderDao">
<bean class="cn.itcast.service.OrderDaoBean"/>
</property>
</bean>
<bean id="order" class="cn.itcast.service.OrderServiceBean">
<property name="lists">
<list>
<value>lihuoming</value>
</list>
</property>
<property name="sets">
<set>
<value>set</value>
</set>
</property>
<property name="maps">
<map>
<entry key="lihuoming" value="28"/>
</map>
</property>
<property name="properties">
<props>
<prop key="12">sss</prop>
</props>
</property>
</bean>
以上的装配方式为XML文件方式。如果用的是注解方式。则按以下步骤:
在java代码中使用@Autowired或@Resource注解方式进行装配。但我们需要在xml配置文件中配置以下信息:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config/>
</beans>
在java代码中使用@Autowired或@Resource注解方式进行装配,这两个注解的区别是:@Autowired 默认按类型装配,@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
@Autowired
private PersonDao personDao;//用于字段上
@Autowired
public void setOrderDao(OrderDao orderDao) {//用于属性的setter方法上
this.orderDao = orderDao;
}
@Autowired注解是按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
@Autowired @Qualifier("personDaoBean")
private PersonDao personDao;
@Resource注解和@Autowired一样,也可以标注在字段或属性的setter方法上,但它默认按名称装配。名称可以通过@Resource的name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。
@Resource(name=“personDaoBean”)
private PersonDao personDao;//用于字段上
注意:如果没有指定name属性,并且按照默认的名称找不到依赖对象时, @Resource注解会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。
分享到:
相关推荐
在这个“Spring与Hibernate整合实例(博客用户登录增删改查)”中,我们将探讨如何将这两个强大的框架——Spring和Hibernate——结合起来,以实现一个博客系统的用户管理功能,包括用户登录、注册、信息修改以及数据...
总结来说,Spring 与 Hibernate 的整合主要涉及 SessionFactory 的配置、DAO 类的实现以及事务管理。通过 Spring 的 IoC 容器管理数据访问资源,可以使应用更加解耦,同时利用 Spring 的事务管理功能,可以简化事务...
本篇文章将详细探讨如何通过Spring整合Hibernate来实现事务处理,重点介绍注解方式和XML配置方式。 首先,我们了解事务处理在数据库操作中的重要性。事务是一组操作,这些操作要么全部成功,要么全部失败,确保数据...
通过以上步骤,我们就成功地搭建了一个Spring与Hibernate整合的开发环境。在实际开发中,我们还需要考虑性能优化、异常处理、事务策略等因素,以确保应用的稳定性和效率。此外,随着技术的发展,Spring Boot和Spring...
在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第11部分,重点可能是建立在前几部分的基础之上,进一步深化对这三个核心技术的理解和实践。 ...
在本文中,我们将深入探讨如何将Spring框架与Hibernate ORM(对象...通过以上步骤,我们可以成功地将Spring与Hibernate整合,实现高效的数据访问层。这个案例旨在帮助初学者理解整合过程,并为实际项目开发提供参考。
例如,Struts 2 可以处理前端用户交互,Spring 可以提供数据访问的事务控制,Hibernate 则负责将业务数据与数据库之间的映射,而JPA则作为它们之间的桥梁,使得ORM操作标准化。这样的架构允许开发者更容易地扩展功能...
《轻量级 J2EE 企业应用实战:Struts+Spring+Hibernate 整合开发》是一本深入探讨Java企业级应用程序开发的经典著作。该书主要围绕着三个核心框架——Struts、Spring和Hibernate,详细阐述了如何在J2EE环境下进行轻...
在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第12部分,将帮助开发者掌握如何在Java Web项目中高效地集成这三个核心框架,实现松耦合、可...
Struts、Spring 和 Hibernate 是Java Web开发中的三大框架,它们各自负责不同的职责,组合使用...在"Struts+Spring+Hibernate整合教程.pdf"中,你可以找到详细的步骤和示例代码,帮助你更好地理解和实践这个整合过程。
在这个实例中,我们将探讨如何将Tuscany SCA与两大主流框架——**Spring**和**Hibernate**进行整合,以实现更加简洁高效的应用开发。 **Spring框架**是Java领域最知名的依赖注入(DI)和面向切面编程(AOP)框架之...
### JSF+Spring+Hibernate整合图文教程详解 #### 一、多层体系结构与JSF+Spring+Hibernate的整合 **多层体系结构**是一种高级的Web应用程序架构方式,其核心在于通过不同的层次来实现软件系统的各个部分,从而提高...
Struts1、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决了一部分问题,而将它们整合在一起,可以构建出高效、灵活的企业级应用程序。这里我们主要探讨这三者整合时所需的核心jar包以及它们的功能。 ...
解压后,我们可以看到Spring和Hibernate整合的具体实现,包括实体类、DAO、Service、配置文件等。 总的来说,Spring与Hibernate的整合使得开发者可以更专注于业务逻辑,而不用过多地关心数据库交互的细节。这种集成...
《JSf-Spring-Hibernate整合开发案例教程》是一本深入探讨如何将三种主流Java技术——JSF(JavaServer Faces)、Spring框架和Hibernate ORM工具进行高效整合的实践指南。本教程旨在帮助开发者掌握在Web应用程序开发...
### hibernate-spring-struts整合手册:构建三层架构的Web应用程序 #### 一、引言与目标 在《hibernate-spring-struts整合手册》中,作者Hantsy Bai旨在展示如何结合strutsMVC框架、Spring中间层以及Hibernate后端...
在本章中,我们将深入探讨如何开发一个基于Struts、Spring、Hibernate和Ajax的网上信息发布平台。这四个技术是Java Web开发中的核心组件,它们各自承担着不同的职责,共同构建了一个强大而灵活的后端架构。 **...
本文将深入探讨如何将Spring与Hibernate整合,以实现对数据库的简单添加记录功能,这对于初学者来说是一次宝贵的学习机会。 首先,我们需要理解Spring的核心概念。Spring提供了一个依赖注入(DI)容器,它负责管理...
综上所述,这个压缩包文件提供的内容很可能是关于Spring和Hibernate整合的一个实例教程,涵盖了SSH集成的基本步骤,包括框架的配置、实体模型设计、持久化操作以及事务管理。对于想要学习或加深理解SSH整合的开发者...
通过以上步骤,我们可以成功地将Spring MVC、Spring和Hibernate整合在一起,实现一个完整的登录功能。这样的实例不仅有助于学习者理解各框架的协同工作方式,而且为实际项目提供了可复用的基础结构。在实践中,还...