Java程序员从笨鸟到菜鸟之(七十九)细谈Spring(八)spring+hibernate整合基本详解
来源:互联网 发布:sql语句查询时间段 编辑:程序博客网 时间:2024/06/18 00:55
由于spring和hibernate处于不同的层次,Spring关心的是业务逻辑之间的组合关系,Spring提供了对他们的强大的管理能力, 而Hibernate完成了OR的映射,使开发人员不用再去关心SQL语句,直接与对象打交道。 将Hibernate做完映射之后的对象交给Spring来管理是再合适不过的事情了, Spring也同时提供了对Hibernate的SessionFactory的集成功能。所以spring+hibernate整合对我们实际开发是非常有必要的。Spring整合hibernate有多种方式,我用的只是其中的一种,我这种不需要hibernate的配置文件,直接配置我们的beans.xml里了。下面我们具体来看一下:
首先我们先把需要的实体类定义出来,我这里定义的是:
这里我们整合spring+hibernate主要是来整合的细节,业务逻辑和分层在此就忽略不计了,我直接把所有的东西都写在了test类里面了。
下面我们来看一下我们的beans.xml的配置,我们先把代码贴出来,然后再下面一点点的深入详解:
Beans.xml:
通过上面的注释我想大家应该大体对这个配置文件明白些了吧。其实这个也很好理解,大体思路就是首先写一个datasource的bean,这个bean主要是为hibernate提供数据源,大家肯定可以想到这个数据源将会被注入到sessionfactory里面,因为构建sessionfactory肯定会需要到这个数据源的信息。
下一步我们在写一个sessionfactory的bean,这个bean将被我们用在注入到dao层,进行数据库操作,当然,他还需要一些属性进行注入,比如我们刚才写的datasource,除了这个之外我们还需要配置我们的实体,spring给我们提供了hbm文件和实体类等多种配置方法。Hbm文件配置我们这样写:
属性值为mappingResources,这个属性值是一个list,我们可以配置他的value,把我们的配置文件一个个的加入进来。如果你没有写配置文件,而是以注解的方式配置的实体类,你当然也可以以实体类的形式加到这里来:你可以以下方式进行配置:把属性的name设置成annotatedClasses
说完配置sessionfactory的的实体,下一步我们还要配置hibernate的的一些属性,比如创建数据库表的方式、数据库方言等。设置hibernate的属性,我们用hibernateProperties来配置,配置方式,上面代码已经很清楚的写到了,在这就不赘述了。
好了,配置完sessionfactory这个bean,下一步我们就要把sessionfactory注入到我们的dao层进行数据库操作了。这一步就比较简单了,相信大家能看懂上面的代码。
看完配置文件,接下来我们就要来测试一下来,试试能不能用hibernate对我们的数据库进行访问了。具体来看一下代码:
大家可以清楚的看到,上面的内容很简单,我们写具体的架构的东西,直接把sessionfactory注入到了test类了,当然了,我们实际开发应用中不会手动的去加载beans.xml的,这里主要是为了测试,测试一下:
打印出sql语句:
Hibernate: insert into users (name) values (?)
好了,基本上我们这个hibernate+spring整合的差不多了。但在调试这个程序的时候还是出了点小差错,最后弄了半天才发现错误所在,我刚开始写的时候,是把main里面的操作都抽出一个方法了,然后再main方法中我是这样调用的new Test().sava(user),直接就出事了。异常的原因就是我new出来的test的对象就不受spring容器管理了,所以在调用save方法时根本sessionfactory就没有被注入进去,所以希望大家注意这一点。
from: http://blog.csdn.net/csh624366188/article/details/7659764
- Java程序员从笨鸟到菜鸟之(七十九)细谈Spring(八)spring+hibernate整合基本详解
- Java程序员从笨鸟到菜鸟之(七十九)细谈Spring(八)spring+hibernate整合基本详解
- Java程序员从笨鸟到菜鸟之(七十九)细谈Spring(八)spring+hibernate整合基本详解
- Java程序员从笨鸟到菜鸟之(八十)细谈Spring(九)spring+hibernate声明式事务管理详解
- Java程序员从笨鸟到菜鸟之(八十)细谈Spring(九)spring+hibernate声明式事务管理详解
- Java程序员从笨鸟到菜鸟之(八十)细谈Spring(九)spring+hibernate声明式事务管理详解
- Java程序员从笨鸟到菜鸟之(八十)细谈Spring(九)spring+hibernate声明式事务管理详解
- Java程序员从笨鸟到菜鸟之(七十)细谈Spring(三)IOC和spring基本配置详解
- Java程序员从笨鸟到菜鸟之(七十二)细谈Spring(四)利用注解实现spring基本配置详解
- Java程序员从笨鸟到菜鸟之(七十)细谈Spring(三)IOC和spring基本配置详解
- Java程序员从笨鸟到菜鸟之(七十二)细谈Spring(四)利用注解实现spring基本配置详解
- Java程序员从笨鸟到菜鸟之(八十三)细谈Spring(十二)OpenSessionInView详解及用法
- Java程序员从笨鸟到菜鸟之(八十三)细谈Spring(十二)OpenSessionInView详解及用法
- Java程序员从笨鸟到菜鸟之(八十二)细谈Spring(十一)深入理解spring+struts2整合(附源码)
- Java程序员从笨鸟到菜鸟之(八十二)细谈Spring(十一)深入理解spring+struts2整合(附源码)
- Java程序员从笨鸟到菜鸟之(七十四)细谈Spring(六)spring之AOP基本概念和配置详解
- Java程序员从笨鸟到菜鸟之(七十八)细谈Spring(七)spring之JDBC访问数据库及配置详解
- Java程序员从笨鸟到菜鸟之(七十四)细谈Spring(六)spring之AOP基本概念和配置详解
- 创建和删除表空间
- 【杂文】宇宙思辨
- 欢迎使用CSDN-markdown编辑器
- win10下安装双jdk并自由切换
- 第二章、SpringMvc内容浅析————搭建SpringMVC框架?
- Java程序员从笨鸟到菜鸟之(七十九)细谈Spring(八)spring+hibernate整合基本详解
- 立体匹配之(二):[MC-CNN] 2015CVPR: Stereo Matching by Training a Convolutional Neural Netw
- 鸿洋大婶:自定义ViewGroup------流式标签布局
- linux 栈溢出学习之return_to_dl-resolve
- Java程序员从笨鸟到菜鸟之(八十)细谈Spring(九)spring+hibernate声明式事务管理详解
- 生产者-消费者模型
- 基本的SQL概念及语法
- Java Web基础——Action+Service +Dao三层的功能划分
- git简单操作