`
littie1987
  • 浏览: 133332 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Spring和Hibernate的整合

阅读更多

     Spring和Hibernate的整合关键就是要将Hibernate的sessionFactory交给Spring来管理。另外一个就是配置数据源。下面来讲如何配置数据源:
     数据源可以采用一些开源的数据源,如DBCP,c3p0等。也可以采用JNDI数据源,即容器提供的数据源。下面就讲解DBCP的配置:

 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  
		<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
		<property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Libo"></property>
		<property name="username" value="sa"></property>
		<property name="password" value=""></property>
		<property name="maxActive" value="100"></property>
		<property name="maxIdle" value="30"></property>
		<property name="maxWait" value="1000"></property>
</bean>

   配置上面的数据源需要引入DBCP的jar包commons-dbcp.jar。它里边有一个类BasicDataSource,它提供了主要数据源配置属性所应有的getter和setter方法,所以我们才能像上面那样配置。当然,可以配置的属性远远超过我上面配的,如果需要配置其他的属性,可以直接到BasicDataSource类里面找到。

     配置JNDI数据源就相对较简单一些。JNDI数据源一般在容器中已经配置好了,在spring中只不过是引用罢了。

那么如何在容器中配置JNDI数据源呢?下面就以tomcat6为例讲解,tomcat5的方法稍有不同。

     首先,在tomcat的目录下找到一个conf目录,里面有一个文件context.xml,用于配置tomcat启动上下文。现在在里面加上一段话:

<Resource
        name="jdbc/test"   auth="Container"
         type="javax.sql.DataSource"
         driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
         url="jdbc:sqlserver://localhost:1433;databaseName=charge"
         username="sa" password=""
         maxActive="30" maxIdle="10"   maxWait="-1"/>

 将这段话放到</context>标签之前就行。当然,里边的参数可以根据具体的情况设定。配置好了之后我们还需要在web.xml文件中加上一段

<resource-ref>   
        <res-ref-name>jdbc/test</res-ref-name>   
        <res-type>javax.sql.DataSource</res-type>   
        <res-auth>Container</res-auth>   
</resource-ref> 

 这里的res-ref-name的值就是context.xml文件中配置的那个名字。这样就配置好了一个JNDI数据源,在程序中我们可以轻松的获得到这个数据源:

Context context = new InitialContext();
DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/test");

 这其中参数java:comp/env/jdbc/test 中java:comp/env/是固定的写法,后面才是JNDI的名字。一旦配置了这样的数据源将使我们获取connection变得异常的简单。

     然而在spring中如何去引用这个数据源呢?首先spring去获得这个数据源的目的是为了将dataSource注入给类org.springframework.orm.hibernate3.LocalSessionFactoryBean,该类会负责创建sessionFactory,即Hibernate的session工厂。所以让spring管理数据源的真正目的是为了管理sessionFactory。spring引用JNDI数据源的方法为:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"
	 lazy-init="false">
	<property name="jndiName" value="java:comp/env/jdbc/test"></property>
</bean>

 这看起来比配置DBCP的数据源要简单多了,其实最终它的底层也是DBCP实现的,它是apache的一个开源项目。

 

     OK!数据源已经有了,下一步就是如何产生Hibernate所需的sessionfactory了。下面贴出一个简单的代码:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
	 depends-on="dataSource" lazy-init="false">
    <property name="dataSource" ref="dataSource"></property>
    <property name="mappingResources">
       <list><value>en/bean/user.hbm.xml</value></list>
    </property>
    <property name="hibernateProperties">
	<props>
	<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
	<prop key="hibernate.hbm2ddl.auto">update</prop>
	<prop key="hibernate.format_sql">true</prop>
	</props>
    </property>
</bean>

 我们注意到,这里边注入了一个dataSource,这个datasource就是我们刚才创建的那个。另外一个就是引入hibernate的实体类映射文件,所有的映射文件都包含在mappingResources下面。然后就是配置hibernate的相关属性,以properties文件的键值对样式配置,包含在<props></props>之间。这样我们就完全可以省略hibernate自身的配置文件hibernate.cfg.xml了。

 

     这样就真的OK了,我们只需要在需要用到sessionfactory的地方给他注入就行了。由于用Hibernate访问数据库经常会用到一个类HibernateTemplate。当我们实例化改类的时候,需要给他传入一个sessionfactory的实例。这时我们就可以利用spring给我们去注入这个值。

 

 

附录:
Spring整合Hibernate必须jar包:

 

不要认为asm.jar、commons-collections.jar、dom4j.jar、jta.jar这几个包不重要,没有他Spring启动不了。

 

分享到:
评论

相关推荐

    spring和hibernate整合

    《Spring与Hibernate整合详解》 在现代Java Web开发中,Spring和Hibernate是两个非常重要的开源框架,它们分别在依赖注入和对象关系映射(ORM)领域有着广泛的应用。Spring作为一个全面的轻量级应用框架,提供了...

    Spring与hibernate 整合 简单示例

    这个简单的示例展示了Spring和Hibernate整合的基本流程,实际项目中可能还需要考虑更多的细节,如异常处理、事务策略等。 总结来说,Spring与Hibernate的整合使得Java开发人员能够更方便地管理数据库操作,并利用...

    Spring+hibernate整合源代码

    这个“Spring+hibernate整合源代码”应该包含了实现上述整合步骤的示例代码,可以作为学习和参考的资源。通过学习和实践这些代码,你可以更好地理解和掌握 Spring 和 Hibernate 整合的细节,提升你的 Java Web 开发...

    struts2和spring和Hibernate整合的jar包

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决应用程序的不同问题,而将这三者整合在一起可以构建高效、灵活的企业级应用。Struts2作为MVC(Model-View-Controller)框架,负责处理用户请求...

    各种jar包集合 spring和hibernate整合齐全

    总的来说,这个压缩包为开发者提供了一个完整的Spring和Hibernate整合环境,省去了寻找和管理依赖项的麻烦,使得开发人员可以更专注于业务逻辑的实现,提高开发效率。在实际开发中,只需根据项目的具体需求,合理...

    spring+hibernate整合demo

    标题"spring+hibernate整合demo"表明这是一个示例项目,展示了如何将Spring和Hibernate这两个框架结合使用。整合Spring和Hibernate可以使应用程序更易于管理,因为Spring可以控制Hibernate的生命周期,并提供事务...

    struts+spring+hibernate整合

    通过以上步骤,一个基本的Struts、Spring和Hibernate整合的应用就搭建完成了。这个整合的关键在于Struts处理HTTP请求,Spring管理业务对象和依赖,而Hibernate则处理数据库操作。这样的架构可以实现松耦合,便于代码...

    spring和hibernate整合示例

    本文将深入探讨如何将Spring与Hibernate整合,以及在实际应用中如何利用Spring的HibernateTemplate进行数据操作。 首先,让我们理解Spring与Hibernate整合的基本原理。整合的主要目标是利用Spring的IoC容器管理...

    浅谈Spring+Hibernate整合(共16页).doc

    总之,Spring 和 Hibernate 的整合是 Java Web 开发中的常见实践,它利用 Spring 的强大管理能力和事务处理,结合 Hibernate 的 ORM 功能,简化了数据库操作和事务管理,提高了软件的可扩展性和可维护性。...

    Spring 和Hibernate 整合笔记和jar包

    3. **Spring与Hibernate整合** - **事务管理**:Spring可以接管Hibernate的事务管理,通过PlatformTransactionManager接口实现声明式事务管理,使得事务控制更为简洁。 - **SessionFactory的获取**:Spring通过...

    JavaEE spring和Hibernate整合(有hibernate.cfg.xml)

    在Java企业级开发中,Spring框架和Hibernate框架的整合是常见的技术栈选择,它们能够帮助开发者构建高效、灵活且易于维护的后端系统。本文将深入探讨如何在JavaEE项目中整合Spring和Hibernate,以及hibernate.cfg....

    Spring与Hibernate整合小例子

    "Spring与Hibernate整合"是为了实现业务逻辑层和数据访问层的高效协作。整合过程通常包括以下几个步骤: 1. **引入依赖**:首先,需要在项目中添加Spring和Hibernate的相关库。这通常通过Maven或Gradle的依赖管理来...

    JavaEE spring和Hibernate整合(没有hibernate.cfg.xml)

    但在Spring中,我们可以利用Spring的`LocalSessionFactoryBean`替代`hibernate.cfg.xml`,将Hibernate的配置信息整合到Spring的配置文件中,这样可以更好地实现依赖注入和管理。 1. **Spring配置Hibernate** - 在...

    spring-Hibernate整合代码测试过程

    总结起来,"spring-Hibernate整合代码测试过程"涉及了Spring框架的依赖注入、事务管理、以及与Hibernate的整合,同时也涵盖了Hibernate的实体映射、DAO设计和事务控制。通过这个过程,我们可以构建出一个高效、健壮...

    Spring与Hibernate整合

    在"25_黑马程序员_黎活明_Spring2.5视频教程_搭建和配置Spring与Hibernate整合的环境.avi"这个文件中,可能详细演示了如何配置这些库到项目的类路径中。 接着,需要配置Spring的IoC容器。这可以通过XML配置文件完成...

    spring和hibernate整合的优化配置

    ### Spring与Hibernate整合的优化配置 #### 一、Spring与Hibernate简介 - **Spring框架**:作为Java开发领域中的一款主流轻量级框架,Spring主要提供了依赖注入(DI)和面向切面编程(AOP)的功能,使得Java开发...

    spring mvc,spring, hibernate 整合登录实例

    通过以上步骤,我们可以成功地将Spring MVC、Spring和Hibernate整合在一起,实现一个完整的登录功能。这样的实例不仅有助于学习者理解各框架的协同工作方式,而且为实际项目提供了可复用的基础结构。在实践中,还...

    spring整合hibernate示例代码

    综上所述,这个压缩包文件提供的内容很可能是关于Spring和Hibernate整合的一个实例教程,涵盖了SSH集成的基本步骤,包括框架的配置、实体模型设计、持久化操作以及事务管理。对于想要学习或加深理解SSH整合的开发者...

Global site tag (gtag.js) - Google Analytics