Hibernate框架(一)总结介绍

作为SSH三大框架之一的Hibernate,是用来把程序的Dao层和数据库打交道用的,它封装了JDBC的步骤,是我们对数据库的操作更加简单,更加快捷。利用Hibernate框架我们就可以不再编写重复的JDBC代码,不再反复的测试我们的SQL语句写的如何。这里这需要我们简单配置,调用框架给我们提供的方法,就可以完成对数据增删改查的,那么Hibernate到底是个什么样的框架呢?如何使用呢?先看一个关于Hibernate框架的知识体系图:

这篇博客,我们来总结一下,Hibernate宏观的认识和,环境搭建。

一,Hibernate到底是什么?

Hibernate是一个基于元数据的轻量级的ORM框架:

1,元数据(Meta Data):data
about data(数据的数据),也就是说描述一个对象数据,相当于这个对象的上下文环境。

2,轻量级:占用资源少,没有侵入性。(其实我认为这只是相对而言,如果和Ibatis相比,它到成重量级的了)。

3,ORM:(Object
Relation Mapping)对象关系数据库的映射

这是Hibernate框架的重点,也就是说将我们程序中的实体(bean,这里也叫POJO)和数据库中的表进行映射。java类型和sql类型映射,面向对象设计和关系型数据库设计的映射,从而我们只需要将更多的精力放到业务中,而不是sql数据库方面。

4,POJO:(Plain Ordinary
Java Object),无格式的普通java对象,也就是上边说的实体,和数据库做映射的简单类。只是在这里提出了一个新的名词而已。

总而言之,Hibernate就是将我们的数据库表和程序的POJO类进行映射,数据的操作进行了封装,使我们不用把数据库弄得非常精通,我们会面向对象编程就可以了,这样大大提高了我们的编程效率,而且对个人的知识要求也降低了。(Hibernate的设计目的是这样的,可是我觉的要想更好的应用Hibernate,更好的掌握开发的来龙去脉,这是要求我们要有更高的能力了,知其然知其所以然了)

二,环境搭建:

1,和前边几个框架的大概流程一样,首先需要我们拷入必备的jar包。jar包的拷入奔着一个够用即可的原则,用什么拷贝什么,当然有些日志输出,单元测试是为了更好的观察框架而拷入的不是必备的。这里讲到是用MySql来进行演示,所以使用了mysql的驱动jar包:

antlr-2.7.6.jar (生成SQL语句)

asm.jar(字节码增强工具类)

c3p0-0.9.1.jar(数据源连接池组件)

cglib-2.1.3.jar(代理组件,基于继承的)

commons-collections-2.1.1.jar(集合工具类组件,会进行高效的操作)

commons-logging-1.0.4.jar(日志输出的转换组件)

log4j-1.2.11.jar(日志输出组件,更加详细和可以控制输出格式,及目的地)

dom4j-1.6.1.jar(XML解析)

ehcache-1.2.3.jar(缓存组件)

ejb3-persistence.jar(持久化操作的规范jar包)

hibernate3.jar(框架的核心jar包)

jta.jar(全局的事务管理)

junit-3.8.1.jar        (单元测试)

mysql-connector-java-3.1.13-bin.jar        (MySQL数据库驱动jar包)

2,引入配置文件:

hibernate.cfg.xml  Hibernate核心配置文件(包括数据库的连接配置,映射文件的读取等)

log4j.properties          Log4j的日志输出控制文件

User.hbm.xml  映射文件(这里的User只是匹配User实体的,一个实体类对应一个此类的映射文件。)

3,核心配置文件hibernate.cfg.xml的编写:

[html] view
plain
copyprint?

  1. <hibernate-configuration>
  2. <!-- 构造数据库的连接工厂,这是Hibernate的核心类 -->
  3. <session-factory>
  4. <!-- 这里是简单的数据库连接的基本信息,也可以写在配置文件中,或者利用JNDI来调用数据源 -->
  5. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/example?useUnicode=true&characterEncoding=utf8</property>
  6. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  7. <property name="hibernate.connection.username">ljh</property>
  8. <property name="hibernate.connection.password">ljh</property>
  9. <!-- 在控制台里打印生成的SQL语句 -->
  10. <property name="hibernate.show_sql">true</property>
  11. <!-- 格式化控制台输出的SQL语句,这两条都是方便我们来学习Hibernate框架 -->
  12. <property name="hibernate.format_sql">true</property>
  13. <!--
  14. 方言:根据指定的方言与数据库打交道,完成SQL的具有语句生成,因为不同的数据库sql语法还是有区别的,
  15. 这里相当于告诉Hibernate框架,我们使用的是什么数据库。
  16. MySQL : org.hibernate.dialect.MySQLDialect
  17. Oracle : org.hibernate.dialect.OracleDialect
  18. -->
  19. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  20. <!-- 管理所有的映射资源文件,这里仅仅配置了User类的配置映射文件,应该将我们的所有的映射配置文件设置到这里,这样我们框架才能找到 -->
  21. <mapping resource="com/ljh/hibernate/pojo/User.hbm.xml"/>
  22. </session-factory>
  23. </hibernate-configuration>

4,   *.hbm.xml与实体类对应的用来做映射的文件的编写,我觉的这里是重点,设计的知识点比较多。这里简单看一个,后边会总结这里边的语法:

[html] view
plain
copyprint?

  1. <hibernate-mapping>
  2. <!-- 实体类class和数据库表table的映射 -->
  3. <class name="com.ljh.hibernate.pojo.User" table="t_user">
  4. <!--
  5. id标签用来映射主键字段
  6. name属性表示类的属性
  7. column属性表示表的字段
  8. -->
  9. <id name="usercode" column="usercode" length="20">
  10. <!-- 主键生成策略
  11. native 表示根据连接数据库的表的主键生成方式来生成主键值
  12. mysql数据采用的auto_increment属性来生成主键值,一般主键字段需要设置的类型为int
  13. assigned 表示主键由用户自己维护。
  14. -->
  15. <generator class="assigned"/>
  16. </id>
  17. <!-- 普通属性的映射
  18. name 表示类中的属性名称
  19. column 表示表中的列名称    column属性不指定会采用默认的值,默认名称与属性名称一致
  20. length 表示属性的字符长度
  21. not-null 表示属性值不能为null
  22. -->
  23. <property name="userpswd" column="userpswd" type="java.lang.String" length="20" not-null="true"/>
  24. <property name="username" />
  25. <property name="regdate" length="19"/>
  26. <property name="orgtype" length="1"/>
  27. </class>
  28. </hibernate-mapping>

5,上边已经做好了实体类和数据表的映射了,我们可以通过Hibernate框架提供的方法进行对数据库的数据操作了,简单看一个dao层类的实现:

[java] view
plain
copyprint?

  1. public void insert(User user) {
  2. //加载配置文件:classpath:hibernate.cfg.xml
  3. Configuration config = new Configuration().configure();
  4. //创建连接工厂
  5. SessionFactory sf = config.buildSessionFactory();
  6. //会话对象,表示与数据库的连接会话过程,相当于jdbc的connection连接对象
  7. Session session = null;
  8. Transaction tx = null ;
  9. try {
  10. //获取会话对象
  11. session = sf.openSession();
  12. //打开事务:Hibernate默认数据操作是不提交事务的,所以我们要手动提交事务。
  13. tx = session.beginTransaction();
  14. //保存对象,持久化操作
  15. session.save(user);
  16. //提交事务
  17. tx.commit();
  18. } catch (Exception e) {
  19. e.printStackTrace();
  20. //事务回滚
  21. tx.rollback();
  22. } finally{
  23. //连接会话关闭
  24. if(session!=null){
  25. session.close();
  26. }
  27. }
  28. }

这样一看我们的方法写的代码也是挺多了,想说的是这里只是写出了Hibernate框架是从创建sessionFactory对象,然后创建session对象,通过session对象进行对数据库的操作。其实真正的开发中,我们会把这些对象,事务的操作交给框架来管理,我们需要做的就是持久化操作的那些代码,是非常少的。

综上为Hibernate实现一个简单插入user数据的例子,当然如果数据库关系复杂了,或者更多的设置,后边会进行相关总结。最后来看看Hibernate框架的优缺点吧,当然这些优缺点都是相对而言呢,看用在什么环境下了!

优点:1,轻量级的ORM框架

2,对JDBC进行了很好的封装,使用了ORM做了映射,那么就可以通过面向对象的方式很容易的操作数据库了。

3,它还提供了缓存机制,可以提高效率。等

缺点:1,如果对大量的数据进行频繁的操作,性能效率比较低,不如直接使用JDBC。

总而言之对于框架,我们利用其优秀的一面,避开其不好的一面,使其对我们开发发挥最大的作用即可!!!

时间: 2024-11-06 12:04:10

Hibernate框架(一)总结介绍的相关文章

Hibernate框架(一)——总体介绍

作为SSH三大框架之一的Hibernate,是用来把程序的Dao层和数据库打交道用的,它封装了JDBC的步骤,是我们对数据库的操作更加简单,更加快捷.利用Hibernate框架我们就可以不再编写重复的JDBC代码,不再反复的测试我们的SQL语句写的如何.这里这需要我们简单配置,调用框架给我们提供的方法,就可以完成对数据增删改查的,那么Hibernate到底是个什么样的框架呢?如何使用呢?先看一个关于Hibernate框架的知识体系图:  这篇博客,我们来总结一下,Hibernate宏观的认识和,

SSH(Struts2+Spring+Hibernate)框架搭建流程&lt;注解的方式创建Bean&gt;

此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblogs.com/wkrbky/p/5912810.html 一.Hibernate(数据层)的搭建: 实现流程 二.Spring(注入实例)的使用: 实现流程 三.Struts2(MVC)的搭建: 实现流程 这里注意一点问题: Struts2与Hibernate在一起搭建,antlr包,有冲突.MyE

Hibernate框架 —— 实体类的自动生成

一: hibernate框架 框架在一定程度上可以理解为一个半成品. Hibernate框架是对数据库进行操作,完成数据持久化得重任. 二: 配置 使用hibernate 需要先下载hibernate.如果要下载最新版的可以去官网下载,而对于历史版本,官网中好像很难找到,不过以下地址可是试试的哦! -> 3.0及以上版本 ->4.0及以上版本 不过在下使用的是3.3.2版本的.另外再说说各版本的意思:    rc 版--发布候选版,表示可能有bug,内容不会有很大的变动    ga 版--稳定

JAVA框架之Hibernate框架的学习步骤

首先介绍一下Java三大框架的关系 以CRM项目即客户关系管理项目示例 hibernate框架的学习路线: 1.学习框架入门,自己搭建框架,完成增删改查的操作 2.学习一级缓存,事物管理和基本查询 3.学习一对多和多对多的操作等 4.学习基本查询和查询的优化 本人正在学习hibernate框架,今天是第一天,愿意把自己的学习过程分享给大家,希望大家提出宝贵意见,留言给我,共同进步需要什么软件.资源.例程jar包等的,可以留下邮箱,我晚上会给大家发过去的,谢谢

Hibernate框架简介

面试被问及了Hibernate框架,虽然问的很少,很简单,但是还是简单的总结一下吧,以备以后不时之需. 什么是Hibernate框架? 百科定义:Hibernate框架式一个开源的对象关系映射(ORM)框架,是对JDBC的轻量级的对象封装,使java程序员可以使用对象思维来操纵DB. 白话版:在Hibernate之前,我们是如何操作DB的?JDBC,需要在程序中嵌入SQL语句.效率低下,不能忍啊.但是Hibernate的出现,让我们无需再操纵SQL语句了,每个表实例被实例化为一个java对象,操

为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?

既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了? Hibernate操作的步骤如下: 1. 获得Configuration对象 2. 创建SessionFactory 3. 创建Session 4. 打开事务 5. 进行持久化操作.比如上面的添加用户操作 6. 提交事务 7. 发生异常,回滚事务

hibernate框架在eclipse下的配置方法(一)

一.ORM O:object 对象 R:Realtion 关系(关系型数据库) M:Mapping 映射 ORM:对象关系型映射 目前流行的编程语言,如Java.C# ,它们都是面向对象的编程语言,而目前主流的数据库产品例如Oracle.DB2等,依然是关系型数据库.编程语言和底层数据库发展的不协调(阻抗不匹配,例如数据库中无法直接实现存储继承.多态.封装等特征和行为),催生出了ORM框架.ORM框架可以作为面向对象语言和关系型数据库之间的桥梁. 二.Hibernate Hibernate是一个

用Maven整合SpringMVC+Spring+Hibernate 框架

用Maven整合SpringMVC+Spring+Hibernate 框架, 实现简单的插入数据库数据 一.搭建开始前的准备 1.打开MyEclipse新建Maven项目.File>New>Other(或Ctrl+N)>Maven Project:然后我们用default Workspace就行了(注意Location的路径,区分目录名和项目名):然后再Filter中输入webapp,我们选择org.apache.maven.archetypes 下的maven-archetype-we

Hibernate框架(二)POJO对象的操作

POJO对象其实就是我们的实体,这篇博客总结一下框架对POJO对象对应数据库主键的生成策略,和一些对POJO对象的简单增删改查的操作. 一,Hibernate框架中主键的生成策略有三种方式: 1,数据库负责生成主键(代理主键) a,native:表示由设置的方言决定采用什么数据库生成主键方式,例如:在MySQL中会采用自增长的方式,主键字段必须都是整形类型:在Oracle数据库中,会采用序列的增长方式. b,sequence:表示采用数据库的序列生成主键,适用于Oracle,DB2数据库中. c