Hibernate+Spring整合开发步骤

Hibernate是一款ORM关系映射框架+Spring是结合第三方插件的大杂烩,Hibernate+Spring整合开发效率大大提升。

整合开发步骤如下:

第一步:导入架包:

1、Hibernate基础包+Spring基础包(AOP代理包和cglib...)

第二步:在spring配置文件中配置datasource(数据库连接信息要么写在hibernate.cfg.xml中;要么写在datasource中)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop" 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.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

    <!-- 设置类扫描器;自动装配Bean -->
    <context:component-scan base-package="com.msit.ssh.sh" />

    <!-- 引入外部属性文件 -->
    <bean
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:jdbc.properties"></property>
    </bean>

    <!-- 配置数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <!-- 配置数据源信息 -->
        <property name="url">
            <value>${connection.url}</value>
        </property>
        <property name="driverClassName">
            <value>${connection.driver_class}</value>
        </property>
        <property name="username">
            <value>${connection.username}</value>
        </property>
        <property name="password">
            <value>${connection.password}</value>
        </property>
        <!-- 最大连接数 -->
        <property name="maxActive">
            <value>${jdbc.maxactive}</value>
        </property>
        <!-- 最大空闲数 -->
        <property name="maxIdle">
            <value>${jdbc.maxidle}</value>
        </property>
        <!-- 最小空闲数 -->
        <property name="minIdle">
            <value>${jdbc.minidle}</value>
        </property>
    </bean>

    <!-- sessionFactory(管理hibernate sessionfactory) -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- 注入数据源 -->
        <property name="dataSource" ref="dataSource" />
        <!-- 第一种方式:引入hibernate.cfg.xml -->
        <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>

        <!-- 第二种方式:所有的hibernate配置配置在spring中 -->

        <!-- 配置映射文件 -->
        <!--
        <property name="mappingDirectoryLocations">
            <list>
                <value>com/msit/ssh/sh/entity/User.hbm.xml</value>
            </list>
        </property> -->

        <!-- 配置其他选项 -->
        <!-- <property name="hibernateProperties">
            <props>
                <prop key=""></prop>
                <prop key="show_sql">true</prop>
                <prop key="hbm2ddl.auto">update</prop>
            </props>
        </property> -->
    </bean>

    <!-- 配置hibernate事务管理器 -->
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <!-- 注入sessionFactory -->
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <!-- 事务通知 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <!-- 配置哪些方法需要用到事务;哪些方法不需要事务 -->
            <tx:method name="*" />
            <tx:method name="get*" propagation="NOT_SUPPORTED" />
        </tx:attributes>
    </tx:advice>

    <!-- 配置aop -->
    <aop:config>
        <!-- 配置切入点 -->
        <aop:pointcut id="txPointcut"
            expression="execution(* com.msit.ssh.sh.service.impl.*.*(..))" />
        <!-- 配置事务通知 -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" />
    </aop:config>

    <!-- <bean class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory"></property></bean> -->

    <!-- <bean id="hibernatedaosuppert"
        class="org.springframework.orm.hibernate3.support.HibernateDaoSupport"
        abstract="true">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <bean id="userdao" class="com.msit.ssh.sh.dao.impl.UserDaoImpl"
        parent="hibernatedaosuppert">
    </bean> -->

</beans>

hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>

        <!-- 数据库连接信息 -->
        <!-- <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="connection.username">db2</property>
        <property name="connection.password">db2</property> -->

        <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>

        <!-- 其他配置 -->
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">update</property>
        <mapping resource="com/msit/ssh/sh/entity/User.hbm.xml"/>

        <!-- <class-cache
            class="org.hibernate.test.legacy.Simple"
            region="Simple"
            usage="read-write"/> -->
    </session-factory>
</hibernate-configuration>

3、配置sessionfactory(hibernate交给sprig管理)

里边注入数据源(datasource);再把hibernate配置文件引入进来
    或者hibernate所有配置都写在sessionfactory中(舍弃了hibernate配置文件)

    <!-- sessionFactory(管理hibernate sessionfactory) -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- 注入数据源 -->
        <property name="dataSource" ref="dataSource" />
        <!-- 引入hibernate.cfg.xml -->
        <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
    </bean>
    

4、dao层继承HibernateDaoSuppert(抽象类)(不能用注解);必须要标明abstract="true"

如果使用此方式:

        <bean id="hibernatedaosuppert"
        class="org.springframework.orm.hibernate3.support.HibernateDaoSupport"
        abstract="true">
        //将sessionFactory注入给HibernateDaoSuppert
        <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>

    //dao层Bean必须配置parent="hibernatedaosuppert"

        <bean id="userdao" class="com.msit.ssh.sh.dao.impl.UserDaoImpl"
            parent="hibernatedaosuppert">

        </bean>

    还想用注解怎么办?
        //编写一个超类继承HibernateDaoSuppert
        public class BaseHibernateDaoSuppert extends HibernateDaoSupport{

            @Resource
            //注入sessionFactory
            public void setMySessionFactory(SessionFactory sessionFactory){
                this.setSessionFactory(sessionFactory);
            }

        }

        //dao层就继承超类
        @Repository("userdao")
        public class UserDaoImpl extends BaseHibernateDaoSuppert implements IUserDao
您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态。 

如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦   

如果您对文章内容有任何疑问, 可以通过评论或发邮件的方式联系我: [email protected]

如果需要转载,请注明出处,谢谢!!
时间: 2024-10-10 23:56:04

Hibernate+Spring整合开发步骤的相关文章

Struts 2 + Hibernate + Spring 整合要点

Struts 2 和 Spring 的功能有重合,因此有必要说明下,整合中分别使用了两种框架的哪些技术. Struts 2 使用功能点: 1.拦截器.一处是对非登录用户购物进行拦截,一处是对文件上传的格式进行拦截.前者的拦截器文件需自己手动编写,后者可直接用 Struts 2 框架封装好的拦截器. 2.数据校验,重写 Validate() 方法.对用户注册信息进行校验. 3.核心控制器 FilterDispatcher,限制只有管理员才能访问后台. Spring 使用功能点: 1.配置 bean

spring整合mybatis步骤分析

1.spring配置datasource bean的时候,不同的数据库连接方式有有不同的datasource实现类. 比如采用c3p0数据库连接池,要用c3p0的datasource实现类 com.mchange.v2.c3p0.ComboPooledDataSource <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name=&

Struts2+Hibernate+Spring 整合示例[转]

原文 http://blog.csdn.net/tkd03072010/article/details/7468769 Spring整合Struts2.Hibernate原理概述: 从用户角度来看,用户发出HTTP请求,当MVC框架的控制器组件拦截到用户请求时,将调用系统的业务逻辑组件,业务逻辑组件则调用系统的DAO组件,而DAO组件则依赖于SessionFactory和DataSource等底层组件实现数据库访问. 从系统实现角度看,Ioc容器先创建SessionFactory和DataSou

struts2+hibernate整合开发步骤

百度的各种代码,步骤,自己整合了一下 1,创建数据库 常用mysql   creat table..... 2,在WebContent下的bin中添加相应的包 http://pan.baidu.com/s/1c2DR2co 本人的百度云盘分享 3,创建实体类以及相应的映射文件. 例如stuinfo.java和stuinfo.hbm.xml stuinfo.java中包含,私有成员对象和getter,setter方法 1 package Po; 2 3 public class Stuinfo i

jbpm工作流框架与Spring整合的步骤

1. 在jbpm.cfg.xml文件中注销掉自己的,导入需要的配置文件 <!-- 注销掉这个 <import resource="jbpm.tx.hibernate.cfg.xml" /> --> <!-- 添加这个配置文件 --> <import resource="jbpm.tx.spring.cfg.xml" /> 2.在hibernate.cfg.xml文件中导入配置文件 <!-- 这是jbmp的配置文件

CXF3.0.4与spring整合开发Webservice功能的web项目

项目非常简单,项目结构如下: 就一个HelloWorldDao接口,一个实现类HelloWorldImpl,一个spring的配置文件applicationContext-server.xml,一个web项目的配置文件web.xml.(当然需要导入CXF3.0.4的包,以及spring的相关包,还有一些像common-logging,aopalliance这样的web项目必备的包,顺便提一下,我的开发环境是jdk1.8.0_40,tomcat7.0.59,我一般喜欢用最新版的!)具体包的截图如下

Struts2,Hibernate,Spring整合时的错误

1 type Exception report 2 3 message 4 5 description The server encountered an internal error that prevented it from fulfilling this request. 6 7 exception 8 9 java.lang.NullPointerException 10 com.bjsxt.registration.action.UserAction.execute(UserActi

Spring框架学习(4)spring整合hibernate

内容源自:spring整合hibernate    spring整合注解形式的hibernate 这里和上一部分学习一样用了模板模式, 将hibernate开发流程封装在ORM层提供的模板类HibernateTemplate中,通过在DAO中对模板类的使用,实现对传统hibernate开发流程的代替. 一.先来看看Hibernate的传统开发流程: 1) 配置SessionFactory对象 hibernate.cfg.xml <session-factory> a 数据源 driver_cl

【转】pringMVC+Hibernate+Spring 简单的一个整合实例

ref:http://langgufu.iteye.com/blog/2088355 SpringMVC又一个漂亮的web框架,他与Struts2并驾齐驱,Struts出世早而占据了一定优势,我在博客<Struts1+Hibernate+Spring整合实例>中做了一个简单的实例,介绍了SSH1的基本搭建方式,Struts2是根据Struts1发展而来,博客中就没有贴SSH2的例子,只对比了下Struts1和Struts2异同,通过对比,SSH2的搭建基本不在话下了.下面同样做一个简单的应用实