`

spirng和hibernate

阅读更多

创立Spring配置文件

spring-hibernate.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="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" >
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
</bean>

?
</beans>

 上面bean定义了一个类型'org.apache.commons.dbcp.BasicDataSource'的data-source. 更重要的是, 它定义了各种访问数据库所需要的连接属性。

    现在让我们定义第二个Spring Bean:SessionFactory.如果你有Hibernate编程经验, 你将实现SessionFactory Bean 负责去创建Session对象,通过Session对象处理 Transaction 和数据访问。 现在同样的SessionFactory Bean必须用Spring的方式进行配置如下,

<bean id="mySessionFactory" 
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="myDataSource"/>
    <property name="mappingResources">
        <list>
            <value>com/xxxx/audit/pojo/Activitylog.hbm.xml</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <value>hibernate.dialect=org.hibernate.dialect.Oracle9Dialect</value>
    </property>
</bean>

 

当配置SessionFactory Bean时,我们已经给出两个强制信息。 一个是data-source 信息包含访问数据库的细节;第二个是一个映射文件的列表,他包含了数据库表和Java类之间的映射信息,我们在第2部分已经定义了他们,在‘list’标志中应用。

    第三个重要的Spring Bean是Hibernate Template. 它提供了一个低级数据访问和操作的包装,精确地它包含以下方法:insert/delete/update/find数据库中的数据,对Hibernate Template的配置唯一的变量是SessionFactory Bean对象如下所示

<bean id="hibernateTemplate" 
class="org.springframework.orm.hibernate3.HibernateTemplate">
    <property name="sessionFactory">
        <ref bean="mySessionFactory"/>
    </property>
</bean>

最后的Bean定义是Dao类,是客户化的类。 虽然此类必须定义在应用级,它能够包含任意数量客户数据访问方法的封装,虽然我们知道它是与数据库交互的 Hibernate Template类,它将是一个Hibernate Template的理想引用

<bean id="ActivitylogDao" class="javabeat.spring.hibernate.ActivitylogDao">
    <property name="hibernateTemplate">
        <ref bean="hibernateTemplate"/>    
    </property>
</bean>

 

定义ActivitylogDao class

    如上所述, 这个ActivitylogDao 类能够包含任意数量的方法供客户访问,这个类的设计有两种选择,第一种是此类能够直接依赖Hibernate Template 对象访问数据,它由IOC注入。 第二种是它你呢个够利用Hibernate API做数据访问,此类声明如下

ActivitylogDao.java 
package javabeat.spring.hibernate;
import java.sql.SQLException;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
public class ActivitylogDao {
    private HibernateTemplate hibernateTemplate;
    public void setHibernateTemplate(HibernateTemplate hibernateTemplate){
        this.hibernateTemplate = hibernateTemplate;
    }
    public HibernateTemplate getHibernateTemplate(){
        return hibernateTemplate;
    }

    public Activitylog getActivitylog (final String id){        
        HibernateCallback callback = new HibernateCallback() {
            public Object doInHibernate(Session session) 
                throws HibernateException,SQLException {
                return session.load(Activitylog.class, id);
            }
        };        
        return (Activitylog)hibernateTemplate.execute(callback);
    }

    public void saveOrUpdate(final Activitylog activitylog){
        HibernateCallback callback = new HibernateCallback() {
            public Object doInHibernate(Session session) 
                throws HibernateException,SQLException {
                session.saveOrUpdate(activitylog);
                return null;
            }
        };          
        hibernateTemplate.execute(callback);
    }
}

 

此类利用了Hibernate API (特别是Session对象) 用于数据访问。引导Spring访问 Hibernate API, 我们把逻辑细化,利用Hibernate API 融入Spring知道的著名接口中的特别著名的方法。 It happens to be the HibernateCallback 接口使用方法doInHibernate() ,通过传送一个Hibernate Session 实例, ActivitylogDao类我们已经定义了两个方法:getActivitylog () and saveOrUpdate .使用Hibernate APIs, 我们定义了HibernateCallback中的代码, doInHibernate() 方法和通知Spring 执行这些代码 ,传送接口引用HibernateTemplate.execute() 方法。

    3.6) 客户端测试程序

SpringHibernateTest.java 
package javabeat.spring.hibernate;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.orm.hibernate3.LocalSessionFactoryBean;

public class SpringHibernateTest {
    public static void main(String[] args) {
        Resource resource = new FileSystemResource("./spring-hibernate.xml");
        BeanFactory factory = new XmlBeanFactory(resource);
        Activitylog activitylog = new Activitylog ();
        activitylog.setId("123");
        activitylog.setName("ABC");
        activitylog.setTaskcode(“8000933120);
        activitylog.setTasktime(“2008 11 20 12:02:30 888888”);
        ActivitylogDao activitylogDao = (ActivitylogDao)factory.getBean(
            "activitylogDao");
        activitylogDao.saveOrUpdate(activitylog);        
        Activitylog actResult = activitylogDao.getActivitylog ("123");       
        System.out.println(actResult);
    }
}

 

最后, 我们运行客户应用访问测试数据,过程像这样。 当方法BeanFactory.getBean("ActivitylogDao") 被调用, Spring 找到ActivitylogDao Bean 的指针。 它产生Hibernate Template 对象。 然后初始化Hibernate Template对象, 我们将看到一个Session Factory Bean对象被引用。然后当建立Session Factory Bean对象的时候, 将得到data-source 信息和数据库表和Java类。

    4)总结

    本文讨论了Spring 和Hibernate的集成。 既讨论了需求也讨论了它带来的好处。 通过一个详细的实例一步步清晰地演示了集成工作

分享到:
评论

相关推荐

    spring和hibernate框架

    Spring 和 Hibernate 是两个非常重要的 Java 开发框架,它们在企业级应用开发中占据了核心地位。Spring 是一个全面的后端应用程序框架,而 Hibernate 则是一个流行的对象关系映射(ORM)工具,它使得 Java 开发人员...

    spring和hibernate整合

    在现代Java Web开发中,Spring和Hibernate是两个非常重要的开源框架,它们分别在依赖注入和对象关系映射(ORM)领域有着广泛的应用。Spring作为一个全面的轻量级应用框架,提供了包括事务管理、AOP(面向切面编程)...

    struts2和spring和Hibernate整合的jar包

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

    使用MyEclipse下整合Spring和Hibernate

    在IT行业中,集成Spring和Hibernate框架是常见的开发实践,尤其在企业级应用中,这两个框架的结合能够提供强大的数据访问和业务逻辑管理能力。MyEclipse作为一款强大的Java集成开发环境,提供了便捷的工具支持来简化...

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

    在JavaEE开发中,Spring和Hibernate是两个非常重要的框架,它们分别负责应用的依赖管理和持久化数据。"SSH"是Struts、Spring和Hibernate的缩写,代表了经典的JavaEE三层架构模型:表现层(Struts)、业务逻辑层...

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

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

    Spring 和Hibernate 整合笔记和jar包

    在Java企业级应用开发中,Spring和Hibernate是两个非常重要的框架。Spring是一个全面的后端应用框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,而Hibernate则是一个强大的ORM(对象...

    java-Struts2-Spring和Hibernate架构应用实例.doc

    "Java-Struts2-Spring和Hibernate架构应用实例" 本文主要讲述了如何使用Struts2、Spring和Hibernate框架来实现一个图书管理系统,涵盖了基本的增加、删除、修改、查询等功能。下面是对标题、描述、标签和部分内容的...

    spring和hibernate集成Demo

    在IT领域,Spring和Hibernate是两个非常重要的框架,它们分别在应用上下文管理和持久化层提供了强大的支持。Spring是一个全面的后端开发框架,而Hibernate则是一个对象关系映射(ORM)工具,使得Java开发者可以方便...

    spring和hibernate源文件

    Spring 和 Hibernate 是两个在 Java 开发领域非常重要的框架,它们分别专注于不同的方面:Spring 主要是为了解耦合和提供依赖注入,而 Hibernate 则是用于对象关系映射(ORM),简化数据库操作。这两个框架的源代码...

    spring和hibernate整合示例

    在IT行业中,Spring和Hibernate是两个非常重要的框架,它们分别在依赖注入和对象关系映射领域扮演着核心角色。Spring框架提供了丰富的功能,包括但不限于控制反转(IoC)、面向切面编程(AOP)以及与各种持久化技术...

    spring和hibernate 的整合

    在IT行业中,Spring和Hibernate是两个非常重要的框架,它们分别在应用层和数据持久化层发挥着关键作用。Spring是一个全面的Java企业级应用开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)...

    Spring与Hibernate集成

    在Java企业级应用开发中,Spring和Hibernate是两个非常重要的框架。Spring是一个全方位的轻量级应用框架,提供了强大的依赖注入、AOP(面向切面编程)以及各种服务管理功能。而Hibernate则是一个优秀的对象关系映射...

    spring和hibernate集成后,通用的basedao

    在IT行业中,Spring和Hibernate是两个非常重要的框架。Spring是一个全面的Java企业级应用开发框架,而Hibernate则是一个优秀的对象关系映射(ORM)工具,它们的集成为开发者提供了强大的数据访问能力。在这个名为...

    Spring与hibernate 整合 简单示例

    在Java开发领域,Spring框架和Hibernate是两个非常重要的开源库,它们分别负责应用程序的依赖管理和对象关系映射(ORM)。Spring作为一个全面的轻量级应用框架,提供了事务管理、AOP(面向切面编程)、IoC(控制反转...

    struts2和spring和hibernate整合所需包集合.rar

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自在应用程序的不同层面发挥着重要作用。Struts2主要用于控制层,实现MVC(Model-View-Controller)设计模式;Spring是一个全面的后端框架,提供了...

    myeclipse下整合spring和hibernate

    在 MyEclipse 下整合 Spring 和 Hibernate 是一个常见的开发任务,特别是在构建企业级 Java 应用程序时。Spring 是一个强大的轻量级框架,提供依赖注入、AOP(面向切面编程)等功能,而 Hibernate 是一个优秀的 ORM...

    使用maven整合spring和hibernate的例子(spring mvc)

    本教程将重点介绍如何使用Maven作为项目管理工具,结合Spring MVC作为控制层框架和Hibernate作为持久层框架,来构建一个完整的Web应用。Maven是Apache组织提供的一个项目管理和综合工具,它可以帮助我们管理项目的...

    java web技术比较好的spring和hibernate书籍

    Java Web技术是构建基于互联网应用程序的关键,Spring和Hibernate是其中两个非常重要的框架。Spring是一个全面的后端开发框架,而Hibernate则是一个强大的对象关系映射(ORM)工具,两者结合可以大大提高开发效率和...

Global site tag (gtag.js) - Google Analytics