首先框架整合我感觉最难的是jar包的引入。因为不同框架的jar容易产生冲突。如果能排除这个因素我想说整合框架还是相对比较容易的。

我整合的框架的一个思想就是:各司其职。因为每个框架处理的事务或者是层次是不一样的。

也就说我们可以这么想。Hibernate就是操纵数据库的是持久层的。而spring就是利用ioc的bean对类进行实例化化的。Spring就是一个容器。

基于这个思想我想到的就是最传统的思想。我写一个往数据库里面添加记录的实例。

所以我整合的步骤就是四步

第一步:搭建hibernate环境(包括引入hibernate的jar,包配置数据源,建立类和表的映射),为什么这么做。我觉得hibernate是最重要的。因为没有spring不影响我往数据里面添加记录。Spring仅仅是一个容器。

第二步:配置spring的环境(引入jar和写一个spring.XML的配置信息)

第三步:在spring里面注册hibernate。

第四步:测试

那么我们按照这个步骤。(我的是spring3.2和hibernate3.2这里两个版本一起很少见。但是只要里面jar不冲突是一点问题没有)

首先我们引入所有jar包:这里我就顺便把spring和hibernate 的全引进去了。

接着就是写hibernate.cgf.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 name="foo">

<property name="myeclipse.connection.profile">mysql</property>

<property name="connection.url">

jdbc:mysql://127.0.0.1:3306/test

</property>

<property name="connection.username">root</property>

</property>

<property name="connection.driver_class">

com.mysql.jdbc.Driver

</property>

<property name="dialect">

org.hibernate.dialect.MySQLDialect

</property>

<property name="hbm2ddl.auto">update</property>//上面都是配置数据源,和本级数据库建立连接的。

<mapping resource="com/fish/dao/Person.hbm.xml" />//把映射表xml往这里注册。

</session-factory>

</hibernate-configuration>

那么我们写Person.hbm.xml

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.fish.dao">

<class  name="Person">//person映射类类名

<id name="id">

<generator class="native" />

</id>

<property name="name"></property>

<property name="passwrod"></property>

</class>

</hibernate-mapping>

当然我们写对应的person映射类类

package com.fish.dao;

publicclass Person {

String name;

String passwrod;

Integer id;

public String getName() {

returnname;

}

publicvoid setName(String name) {

this.name = name;

}

public String getPasswrod() {

returnpasswrod;

}

publicvoid setPasswrod(String passwrod) {

this.passwrod = passwrod;

}

public Integer getId() {

returnid;

}

publicvoid setId(Integer id) {

this.id = id;

}

}

上面是对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" xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="

        http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/context

        http://www.springframework.org/schema/context/spring-context.xsd">

<bean id="person" class="com.fish.dao.Person">

<property name="name" value="tom"></property>

<property name="passwrod" value="330127"></property>

<bean id="sessionfactroy"

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="configLocation" value="hibernate.cfg.xml"></property>     //这个bean是spring内部的一个类                         // LocalSessionFactoryBean这个类实例化我们可以得到sessionfactory。该类中有个属性configLocation通过这个属性我们就可以hibernate.cfg.xml建立联系了。

</bean>

</beans>

下面我们来一个测试类。

package com.fish.dao;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

publicclass Test {

publicstaticvoid main(String[] args) {

// Configuration configuration=new Configuration();

// configuration.configure("hibernate.cfg.xml");

//

// SessionFactory factory=configuration.buildSessionFactory();

// Session session=factory.openSession();

//

// Person person=new Person();

// person.setName("yaku");

// person.setPasswrod("123456");

// Transaction transaction=session.beginTransaction();

// session.save(person);

// transaction.commit();

// session.close();

上面注释的是我们没有加入spring对hibernate的测试。我们可以对比下面,看看spring给我做了什么;

ApplicationContext context = new ClassPathXmlApplicationContext(

"spring.xml");

SessionFactory factory = (SessionFactory) context

.getBean("sessionfactroy");   //spring直接帮我们加载了hibernate.cgf.xml文件,让我们直接操作了sessionfactory。其实下面的事务管理我们也可以通过spring的来管理的。但是由于没写一个一个代理类所以就没写。

Session session = factory.openSession();

Transaction transaction = session.beginTransaction();

Person person = (Person) context.getBean("person");

session.save(person);

transaction.commit();

session.close();

}

}

其实还有一种关联spring和hibernate的方法那就是将hibernate.cgx.XML放到spring来注册数据源,这样可以省去写hibernate.cgx.XML文件,但是这个个人感觉会给spring文件造成臃肿,所以我用的是分开的这种。

hibernate+spring的整合思路加实例(配图解)的更多相关文章

  1. struts2+hibernate+spring简单整合且java.sql.SQLException: No suitable driver 问题解决

    最近上j2ee的课,老师要求整合struts2+hibernate+spring,我自己其实早早地有准备弄的,现在都第9个项目了,无奈自己的思路和头绪把自己带坑了,当然也是经验问题,其实只是用myec ...

  2. Hibernate + Spring (quartz) 整合懒(延迟)加载问题

    开发项目的时候 在一个Job中执行了数据库操作, 用的是懒加载,但是如下错误 org.hibernate.LazyInitializationException: failed to lazily i ...

  3. spring boot整合redis多实例

    最近项目中遇到需要连接两个redis实例的情况,于是就在spring boot原先的基础上修改了一点. 首先,添加所需的依赖 <dependency> <groupId>org ...

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

    ref:http://langgufu.iteye.com/blog/2088355 SpringMVC又一个漂亮的web框架,他与Struts2并驾齐驱,Struts出世早而占据了一定优势,我在博客 ...

  5. Spring与Hibernate、Mybatis整合

    在Web项目中一般会把各个web框架结合在一起使用,比如spring+hibernate,spring+ibatis等,如此以来将其他的框架整合到spring中来,便有些少许的不便,当然spring已 ...

  6. Spring + mybatis整合方案总结 结合实例应用

    Spring + mybatis整合实例应用 项目结构图 (Spring3.0.2 +mybatis3.0.4) 方案一: 通过配置文件整合Spring和mybatis 应用数据库 -- --数据库 ...

  7. Struts、Hibernate和Spring的整合

    Spring整合Hibernate Spring以其开放性,能与大部分ORM框架良好的整合.这样Spring就能轻松地使用ORM. Spring提供了DAO支持,DA0组件是应用的持久层访问的重要组件 ...

  8. Struts2+Hibernate+Spring 整合示例

    转自:https://blog.csdn.net/tkd03072010/article/details/7468769 Struts2+Hibernate+Spring 整合示例 Spring整合S ...

  9. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:SSH框架(Struts2+Spring+Hibernate)搭建整合详细步骤

    在实际项目的开发中,为了充分利用各个框架的优点,通常都会把 Spring 与其他框架整合在一起使用. 整合就是将不同的框架放在一个项目中,共同使用它们的技术,发挥它们的优点,并形成互补.一般而言,在进 ...

随机推荐

  1. $timeout, $interval

    $timeout, $interval   layout: posttitle: Angular@1.4.3 中文 API 服务篇 $timeout & $intervaldesc: '$ti ...

  2. asp.net中实现MD5加密、解密的方法

    这个MD5加密.解密的方法会使用即可. 使用时的代码备忘:Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile(& ...

  3. JavaScript基础(语法类型转换、运算符、语句)

    1.类型转换: 分为自动转换和强制转换,一般用强制转换. 其他类型转换为整数:parseint(): 其他类型转换为小数:parsefloat(): 判断是否是一个合法的数字类型:isNaN(): 是 ...

  4. SSIS DB目录设置 (Integration Services Catalogs)

    1.创建SSISDB目录 这里没什么好说的,点击Enable CLR Integration ,然后设置一个加密密码 2. SSIS Catalog设置 Retention Period (days) ...

  5. VS2015 启用“仅我的代码”

    在调试网站的时候,如果不勾选 [启用"仅我的代码"],会跳出一大堆异常,但是异常不作处理,非常烦人: 解决办法就是在 [调试]->[选项]->[勾选 启用"仅 ...

  6. iOS 图标、图形尺寸? iPhone、iPad、 iPod touch

    链接地址:http://www.zhihu.com/question/20248971 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:刘剑链接:http://www.zhi ...

  7. zoj 3195 Design the city lca倍增

    题目链接 给一棵树, m个询问, 每个询问给出3个点, 求这三个点之间的最短距离. 其实就是两两之间的最短距离加起来除2. 倍增的lca模板 #include <iostream> #in ...

  8. struts2上传下载

    struts上传下载必须引入两个jar文件: commons-fileupload-x.x.x.jar和comons-io-x.x.x.jar上传文件 import java.io.BufferedI ...

  9. ASP.net WebAPI 上传图片

    [HttpPost] public Task<Hashtable> ImgUpload() { // 检查是否是 multipart/form-data if (!Request.Cont ...

  10. 细说SSO单点登录(转)

    什么是SSO? 如果你已知道,请略过本节! SSO核心意义就一句话:一处登录,处处登录:一处注销,处处注销.即:在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 很多人容易把SS ...