`

Spring与Hibernate的融合

阅读更多

有的朋友可能只希望知道spring与hibernate的融合。所以在讲struts+spring+hibernate之前,我们跳过使用stuts,先说一下spring+hibernate的融合。如果仍然用SSHProject这个项目,需要把po和dao包下面的类删除,因为我们在生成影射文件和DAO时可能会出现重名文件。还有applicationContext.xml中的bean同样删除。

 

第一步 配置数据环境

 

既然我们用到hibernate,就要给他配置数据库,这里我们使用的是mysql5.0。eclipse3.2.2一下的版本与3.2.2版本数据库的配置是不同的,这里我们只讲3.2.2的配置。

1、打开DB Brower

2、新建数据库连接

在DB Brower中右键>新建打开下面对话框,选择输入正确的配置。提示:注意你的数据库名、密码、和驱动器。

单击“完成”,测试如果连接到数据库,就OK。

 

第二步 选择hibernate与包的导入

 

1、hibernate的选择

 

上面我们已经提到,spring1.2只支持hibernate3.0以下的版本,所以如果你选择的是spring1.2一定要注意这个问题。这里我使用的是hibernate3.1

 

2、包的导入

 

 

单击“完成”OK。

 

分析:在导入包时出现几个问题:1、在找spring建好的applicationContext.xml文件时没有找到路径,被迫把其他项目的数据库连接bean考到该文件内((注:仅仅是我存在的问题)。2、把自动生成的sessionFactory删除。3、最后可能会出现找不到包,所以你要手动添加几个包。

 

现在我们看看applicationContext.xml文件内容有什么变化,内容如下:

 

 

<?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">
 
 <bean id="dataSource"
  class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName"
   value="com.mysql.jdbc.Driver">
  </property>
  <property name="url"
   value="jdbc:mysql://localhost:3306/pullhand">
  </property>
  <property name="username" value="root"></property>
  <property name="password" value="815241"></property>
 </bean>
 <bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref bean="dataSource" />
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">
     org.hibernate.dialect.MySQLDialect
    </prop>
   </props>
  </property>
 </bean>

</beans>

 

注:粗体字为自动加入的内容。

 

第三步 创建影射文件po及dao

1、创建影射文件

首先你要确定所需要的包都导入classpath路径中,否则在创建影射文件中会出现一些不能操作的对象。如果出现问题,建议大家多重复做几次。

 

单击"完成",就OK。

在包资源管理器中我们可以看到,自动生成四个文件,包括CustomerDAO。

为了方便操作我们包CustomerDAO放在dao包下。如果你没有删除ICustomerDAO接口,那我们就使用它了(因为spring是面对接口的,所以我们的操作都应该经过接口)。

接下来,我们再看看applicationContext.xml有什么变化。内容如下:

 

<?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">
 
 <bean id="dataSource"
  class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName"
   value="com.mysql.jdbc.Driver">
  </property>
  <property name="url"
   value="jdbc:mysql://localhost:3306/pullhand">
  </property>
  <property name="username" value="root"></property>
  <property name="password" value="815241"></property>
 </bean>
 <bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref bean="dataSource" />
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">
     org.hibernate.dialect.MySQLDialect
    </prop>
   </props>
  </property>
  <property name="mappingResources">
   <list>
    <value>com/ssh/beans/po/Customer.hbm.xml</value></list>
  </property>
  </bean>
  
  <bean id="CustomerDAO" class="com.ssh.beans.dao.CustomerDAO">
   <property name="sessionFactory">
    <ref bean="sessionFactory" />
   </property>
  </bean>
   
 </beans>

 

注:粗体字为新内容。提醒:如果你没有改CustomerDAO的路径,它应该在po包下。

 

2、创建dao。

CustomerDAO.java我们使用hibernate自动生成,ICustomerDAO.java接口使用我们以前建好的。

 

3、创建测试类

既然我们不使用action,那么我们就新建一个类Test.java用于测试。内容如下:

 

package com.ssh.struts.action;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.ssh.beans.dao.CustomerDAO;

public class Test{
 
 private ApplicationContext context;
 

 
 private void test(){
  CustomerDAO customerDAO=(CustomerDAO)context.getBean("customerDAO");
  List list=customerDAO.findAll();
  if(list!=null&&list.size()>0){
   System.out.println("list.size():"+list.size());
  }else{
   System.out.println("ERROR or NULL");
  }
 }
 private void run(){
  context=new ClassPathXmlApplicationContext("applicationContext.xml");
  test();
 }
 public static void main(String[] args){
  new Test().run();
 }
}

 

分析:在测试中可能出现两个异常:

 

异常一、java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool。如果出现这个异常说明缺少commons-pool-1.2.jar包。

 

异常二、org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver';;;Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver。如果出现这个异常,说明在构建路径中没有驱动包。

 

好的,我们现在测试一下,如果System.out.println("list.size():"+list.size());执行,说明我们对spring与hibernate的融合成功了。

分享到:
评论

相关推荐

    Spring,Hibernate整合源码

    通过阅读和理解提供的"Spring,Hibernate整合源码",可以深入学习如何在实际项目中将这两个框架融合,掌握最佳实践,提高开发效率。源码分析通常涉及对配置文件的理解,如Spring的beans.xml和Hibernate的hibernate....

    学生信息系统(使用了Sturts+Spring+Hibernate技术)

    《基于Struts+Spring+Hibernate的学生信息系统解析》 在当今的Web开发领域,Struts、Spring和Hibernate这三大框架的组合应用已经成为了构建企业级应用的常见选择。本项目“学生信息系统”就是一个典型的实例,它...

    webservice + spring + hibernate

    【hibernate】:Hibernate是一个强大的Java持久层框架,它实现了对象关系映射(ORM),将Java对象与数据库表之间的映射关系自动化。Hibernate通过注解或XML配置文件,可以将Java类映射到数据库表,提供透明的数据...

    spring4+hibernate4整合例子

    Spring4和Hibernate4是Java开发中的两大核心框架,它们分别负责应用的依赖管理和持久化数据。这个整合例子展示了如何在Eclipse环境中将这两个框架...通过实践这个整合例子,你可以深入学习和体验这些技术的融合与应用。

    spring Spring MVC Hibernate 4.x 整合案例

    完成这些步骤后,下载并运行这个案例,你将看到一个功能完备的Web应用,它展示了Spring、Spring MVC和Hibernate的完美融合。 总的来说,这个整合案例涵盖了Java Web开发的核心技术,对于初学者来说,它是理解和掌握...

    Struts+Spring+Hibernate整合注册登录_好资源0分送

    【Struts+Spring+Hibernate整合】是企业级Java Web应用中常见的技术栈,这三种框架的结合能够实现模型-视图-控制器(MVC)架构的高效开发,提供数据持久化、业务逻辑处理以及前端控制的完美融合。在这个特定的项目中...

    Struts+Spring+Hibernate的完美融合BlogJava.mht

    Struts+Spring+Hibernate的完美融合BlogJava.mht

    spring_struts_hibernate整合开发书籍

    《Spring+Struts+Hibernate整合开发》是一本深入讲解企业级Java应用开发的书籍,它主要聚焦于三大著名开源框架——Spring、Struts和Hibernate的集成与应用。这些框架是Java Web开发中的基石,广泛应用于各种复杂的...

    spring整合hibernate例子

    这样,整个流程就将Spring的控制反转和事务管理能力与Hibernate的ORM功能融合在一起。 整合Spring和Hibernate的优点包括:减少代码量,提高可维护性,通过Spring的事务管理实现更高级别的并发控制,以及通过...

    Struts+Spring+Hibernate整合

    Spring还集成了数据访问、Web、缓存等多个模块,可以与Hibernate完美融合。 **Hibernate框架** Hibernate 是一个流行的ORM(对象关系映射)框架,它将Java对象与数据库表进行映射,使得开发者可以使用面向对象的...

    struts2+spring+hibernate实验设备管理系统

    《Struts2+Spring+Hibernate 实验设备管理系统详解》 在信息技术领域,开发高效、稳定的管理系统是企业信息化建设的关键。...通过实践,开发者可以更好地掌握这些技术的融合与应用,从而提升软件开发的效率和质量。

    spring+hibernate3+struts2+lucene

    【标题】"Spring+Hibernate3+Struts2+Lucene" 框架组合是过去在Web开发中广泛采用的一种技术栈,它整合了四个强大的开源框架,为构建高效、可扩展的企业级应用提供了坚实的基础。 Spring框架是Java企业级应用的核心...

    基于Spring+hibernate+mysql+rmi+swing的登录Demo

    总结起来,这个登录Demo巧妙地融合了Spring的控制反转与面向切面编程,Hibernate的对象关系映射,MySQL的可靠数据存储,RMI的远程通信,以及Swing的图形界面设计,形成了一套完整的客户端-服务器端应用。这样的组合...

    java开发框架(Spring+Hibernate+Struts)

    此外,Jboss Seam作为一个新兴的框架,以其一体化的解决方案,试图挑战Spring+Hibernate+Struts的主导地位,它融合了JSF、CDI和EJB等技术,提供了更高效、更简洁的开发体验。 在Web层框架的较量中,JSF(JavaServer...

    webwork-spring-hibernate.rar_spring_webwork

    总之,这个压缩包提供的资源是关于如何在Java Web项目中融合WebWork(Struts)、Spring和Hibernate这三个框架,实现一个完整的MVC架构,利用Spring的依赖注入和事务管理,结合Hibernate的ORM能力,构建高效、可维护...

    struts+spring+hibernate

    SSH的整合主要体现在Spring作为整体的协调者,将Struts 2和Hibernate融合在一起。Spring可以管理Struts 2的Action对象,实现Action的依赖注入,而Hibernate则作为数据持久层的解决方案。通过Spring的事务管理,可以...

    spring 2.5 hibernate struts2 整合例子

    在IT行业中,Spring、Hibernate和...通过这样的整合,我们可以构建出一个高效、可维护的企业级Web应用,它将Spring的灵活性、Hibernate的数据持久化能力以及Struts2的Web交互处理能力融合在一起,形成强大的开发框架。

    A4j 原创小案例+Spring+hibernate

    【描述】:“个人做的 小例子 A4j Myfaces JSF Spring Hibernate”表明这是一个由个人开发者创建的实践项目,它融合了A4j、MyFaces、JSF(JavaServer Faces)、Spring以及Hibernate这些重要的Java开发工具和技术。...

    电子政务网站系统 spring mvc、spring、hibernate

    《电子政务网站系统:Spring MVC、Spring与Hibernate的深度融合》 在信息技术日益发达的今天,电子政务已经成为政府提升服务效率、增强公众参与度的重要手段。本文将深入探讨一个基于Spring MVC、Spring和Hibernate...

    最新的S2SH整合:Spring4,Hibernate4,Struts2(源码)

    本资源提供的"最新的S2SH整合:Spring4,Hibernate4,Struts2(源码)",旨在帮助开发者理解和实践这三大框架的集成与应用。 首先,Spring框架是Java企业级应用的核心组件,它提供了依赖注入(Dependency Injection, DI...

Global site tag (gtag.js) - Google Analytics