阅读目录

一、概述

二、整合步骤

  1.大致步骤

  2.具体分析

一、概述 

Spring整合Hibernate有什么好处?

  1、由IOC容器来管理Hibernate的SessionFactory

  2、让Hibernate使用上Spring的声明式事务

二、整合步骤

1.大致步骤

1)、加入Hibernate

  • 加入hibernate jar包
  • 添加Hibernate的配置文件:hibernate.cfg.xml

2)、加入Spring

  • 加入spring jar包
  • 加入Spring配置文件

3)、编写测试类

下图为项目建立的目录结构:

    

2.具体分析:

  1).导入jar包(若是maven工程则可以更加简单)

  2).写类及配置文件

a).编写domain类

Classes.java代码如下:

 package com.yanwu.www.spring_hibernate.domain;

 import java.io.Serializable;

 public class Classes implements Serializable{
private Long cid;
private String cname;
public Long getCid() {
return cid;
} public void setCid(Long cid) {
this.cid = cid;
} public String getCname() {
return cname;
} public void setCname(String cname) {
this.cname = cname;
} public String getDescription() {
return description;
} public void setDescription(String description) {
this.description = description;
} private String description;
}

映射文件Classes.hbm.xml代码如下:

 <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.yanwu.www.spring_hibernate.domain.Classes">
<id name="cid" type="java.lang.Long" length="5">
<column name="cid"></column>
<generator class="increment"></generator>
</id>
<property name="cname" length="20"></property>
<property name="description" length="50"></property>
</class>
</hibernate-mapping>

b).编写dao类

ClassesDao.java代码如下:

 package com.yanwu.www.spring_hibernate.dao;

 import com.yanwu.www.spring_hibernate.domain.Classes;

 public interface ClassesDao {
public void saveClasses(Classes classes);
}

c).编写dao实现类Impl

ClassesDaoImpl.java代码如下:

 package com.yanwu.www.spring_hibernate.dao.impl;

 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

 import com.yanwu.www.spring_hibernate.dao.ClassesDao;
import com.yanwu.www.spring_hibernate.domain.Classes; public class ClassesDaoImpl extends HibernateDaoSupport implements ClassesDao{ @Override
public void saveClasses(Classes classes) {
this.getHibernateTemplate().save(classes);
} }

d).编写service类(业务层接口)

ClassesService.java代码如下:

 package com.yanwu.www.spring_hibernate.service;

 import com.yanwu.www.spring_hibernate.domain.Classes;

 public interface ClassesService {
public void saveClasses(Classes classes);
}

e).编写service实现类Impl(业务层接口的实现)

ClassesServiceImpl.java代码如下:

 package com.yanwu.www.spring_hibernate.service.impl;
import com.yanwu.www.spring_hibernate.dao.ClassesDao;
import com.yanwu.www.spring_hibernate.domain.Classes;
import com.yanwu.www.spring_hibernate.service.ClassesService; public class ClassesServiceImpl implements ClassesService{
private ClassesDao classesDao;
public ClassesDao getClassesDao() {
return classesDao;
}
public void setClassesDao(ClassesDao classesDao) {
this.classesDao = classesDao;
}
public void saveClasses(Classes classes){
this.classesDao.saveClasses(classes);
}
}

f).spring的配置

applicationContext.xml的代码如下:

说明:利用配置来得到session工厂

 <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!--
Session 工厂配置
LocalSessionFactoryBean这个类实例化我们可以得到sessionfactory。
该类中有个属性configLocation通过这个属性我们就可以hibernate.cfg.xml建立联系了。
id="sessionFactory"的配置需要与hibernate.cfg.xml建立联系
--> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean> <!-- 加载配置文件jdbc.properties ,在其中保存数据库信息,方便日后维护-->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean> <!-- 配置数据源 -->
<bean id="dataSource" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean> <bean id="sessionFactory1" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!-- 引用数据源 -->
<property name="dataSource" ref="dataSource"/> <!-- 加载实体类的映射文件位置及名称,可以使用通配符 -->
<property name="mappingResources">
<list>
<value>com/yanwu/www/spring_hibernate/domain/Classes.hbm.xml</value>
</list>
</property> <!-- 配置数据库方言,这里是MySQL -->
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
</value>
</property> </bean> <bean id="classesDao" class="com.yanwu.www.spring_hibernate.dao.impl.ClassesDaoImpl"> <property name="sessionFactory">
<ref bean="sessionFactory1"/>
</property>
</bean> <bean id="classesService" class="com.yanwu.www.spring_hibernate.service.impl.ClassesServiceImpl" >
<property name="classesDao">
<ref bean="classesDao"/>
</property>
</bean> <!-- 配置Spring声明式事务 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory1"/>
</property>
</bean> <!-- 配置事务事务属性 --> <tx:advice id="tx" transaction-manager="transactionManager">
<tx:attributes>
<!-- 方法对应的传播属性 -->
<tx:method name="save*" read-only="false"/>
</tx:attributes>
</tx:advice> <!-- 配置事务切点,并把切点和事务属性关联起来,事务控制位置,一般在业务实现层 -->
<aop:config>
<aop:pointcut expression="execution(* com.yanwu.www.spring_hibernate.service.impl.ClassesServiceImpl.*(..))" id="perform"/>
<aop:advisor advice-ref="tx" pointcut-ref="perform"/>
</aop:config>
</beans>

g).hibernate和数据库信息的配置(可选)

hibernate.cfg.xml代码如下:

 <?xml version='1.0' encoding='utf-8'?>
<!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.username">root</property>
<!--
密码
-->
<property name="connection.password">root</property>
<!--
url
-->
<property name="connection.url">
jdbc:mysql://localhost:3306/test
</property>
<!--
方言
告诉hibernate,要操作的数据库是mysql
-->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!--
导入驱动
-->
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!--
validate
只检查结构
update
检查结构,更新或者创建表
create
每次启动hibernate时,都要创建表
create-drop
启动hibernate时创建表,当hibernate关闭时,删除表
-->
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<mapping resource="com/yanwu/www/spring_hibernate/domain/Classes.hbm.xml" /> </session-factory>
</hibernate-configuration>

jdbc.properties代码如下:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/test
jdbc.username=root
jdbc.password=root

  3).写测试类

ClassesServiceTest.java代码如下:

 package com.yanwu.www.spring_hibernate.test;

 import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.yanwu.www.spring_hibernate.domain.Classes;
import com.yanwu.www.spring_hibernate.service.ClassesService; public class ClassesServiceTest {
@Test
public void testSaveClasses(){
ApplicationContext context = new ClassPathXmlApplicationContext("com/yanwu/www/spring_hibernate/config/applicationContext.xml");
ClassesService classesService = (ClassesService) context.getBean("classesService");
Classes classes = new Classes();
classes.setCname("aa");
classesService.saveClasses(classes);
}
}

至此,完成了spring和hibernate的整合,第一次写博客,请大家多多指导。提供项目下载地址:https://pan.baidu.com/s/1kUCohYf

spring和hibernate的整合的更多相关文章

  1. SSH(Spring SpringMVC Hibernate)框架整合

    项目说明: 使用SSH(Spring SpringMVC Hibernate)框架整合添加部门功能 项目结构   1.导入依赖jar包 <!--单测--> <dependency&g ...

  2. Spring+Struts2+Hibernate的整合

    这篇主要采用Maven搭建Spring+Struts2+Hibernate的整合项目,复习一下SSH框架,虽然spring提供自己的MVC框架, 但是Spring也提供和其他框架的无缝整合,采用组件形 ...

  3. Spring+Struts2+Hibernate框架整合流程

    一:基本步骤 新建Maven项目,导入相关依赖(推荐) 在WEB-INF的web.xml中进行配置 ————–Hibernate配置 —————- 创建entity包,创建数据库相关实体类 根据实体类 ...

  4. Spring 和 Hibernate的整合

    问题 ,spring 和 hibernate 整合 如何整合 1. Spring 使用Hibernate的的SessionFactory 2. Hibernate使用Spring提供的声明式事务

  5. 【spring 6】Spring和Hibernate的整合:编程式事务

    一.编程式事务简介 在 Spring 出现以前,编程式事务管理对基于 POJO 的应用来说是唯一选择.用过 Hibernate 的人都知道,我们需要在代码中显式调用beginTransaction() ...

  6. Spring + Spring MVC+Hibernate框架整合详细配置

    来源于:http://www.jianshu.com/p/8e2f92d0838c 具体配置参数: Spring: spring-framework-4.2.2Hibernate: hibernate ...

  7. ssh整合思想 Spring与Hibernate的整合 项目在服务器启动则自动创建数据库表

    Spring整合Hibernate Spring的Web项目中,web.xml文件会自动加载,以出现欢迎首页.也可以在这个文件中对Spring的配置文件进行监听,自启动配置文件, 以及之前Struts ...

  8. ssh整合思想 Spring与Hibernate的整合ssh整合相关JAR包下载 .MySQLDialect方言解决无法服务器启动自动update创建表问题

    除之前的Spring相关包,还有structs2包外,还需要Hibernate的相关包 首先,Spring整合其他持久化层框架的JAR包 spring-orm-4.2.4.RELEASE.jar  ( ...

  9. Spring+SpringMVC+Hibernate简单整合(转)

    SpringMVC又一个漂亮的web框架,他与Struts2并驾齐驱,Struts出世早而占据了一定优势,下面同样做一个简单的应用实例,介绍SpringMVC的基本用法,接下来的博客也将梳理一下Str ...

随机推荐

  1. jquery转盘抽奖的研究

    先看效果: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF ...

  2. EzHttp 使用Https协议时证书如何部署

    今天为EzHttp增加了https支持, EzHttp介绍见这里:使用EzHttp框架 开发基于HTTP协议的CS轻应用 服务端启动时会创建自签名证书,并将其绑定到启动参数url对应的端口上. 服务端 ...

  3. 比较Java中几个常用集合添加元素的效率

    初始化需要进行比较的集合,统一增加10万个元素,获取整个过程的执行时间. 1.List集合增加元素 private static void testList() { List<Integer&g ...

  4. 线下市场,选择微信小程序从未显得如此重要

    2017 年 1 月 9 日,小程序正式上线,到今日,3 月 8 号,这个新产品面世刚好满两个月.小程序刚推出便受到全球关注,腾讯股价当天即创逾一个月高位,但关注度先是急速上涨,不久便迅速降温,甚至在 ...

  5. iOS开发 - Swift实现清除缓存功能

    前言: 开发移动应用时,请求网络资源是再常见不过的功能.如果每次都去请求,不但浪费时间,用户体验也会变差,所以移动应用都会做离线缓存处理,其中已图片缓存最为常见. 但是时间长了,离线缓存会占用大量的手 ...

  6. SQL Server中关于基数估计如何计算预估行数的一些探讨

    关于SQL Server 2014中的基数估计,官方文档Optimizing Your Query Plans with the SQL Server 2014 Cardinality Estimat ...

  7. 蓝桥杯-打印十字图-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  8. [周译见] C# 7 中的模范和实践

    原文地址:https://www.infoq.com/articles/Patterns-Practices-CSharp-7 关键点 遵循 .NET Framework 设计指南,时至今日,仍像十年 ...

  9. vsftp使用方法与问题解决

    安装环境 OS:Centos 6.4 vsftp:vsftpd-2.2.2-11.el6_3.1.i686.rpm vsftpd配置文件:/etc/vsftpd/vsftpd.conf 一.      ...

  10. 基于ABP框架的权限设置

    需求:在界面展示中,"定向包管理","竞价管理","竞拍管理","发布定向资源","添加竞价资源", ...