作为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的编写:
这样一看我们的方法写的代码也是挺多了,想说的是这里只是写出了Hibernate框架是从创建sessionFactory对象,然后创建session对象,通过session对象进行对数据库的操作。其实真正的开发中,我们会把这些对象,事务的操作交给框架来管理,我们需要做的就是持久化操作的那些代码,是非常少的。
综上为Hibernate实现一个简单插入user数据的例子,当然如果数据库关系复杂了,或者更多的设置,后边会进行相关总结。最后来看看Hibernate框架的优缺点吧,当然这些优缺点都是相对而言呢,看用在什么环境下了!
优点:1,轻量级的ORM框架
2,对JDBC进行了很好的封装,使用了ORM做了映射,那么就可以通过面向对象的方式很容易的操作数据库了。
3,它还提供了缓存机制,可以提高效率。等
缺点:1,如果对大量的数据进行频繁的操作,性能效率比较低,不如直接使用JDBC。
总而言之对于框架,我们利用其优秀的一面,避开其不好的一面,使其对我们开发发挥最大的作用即可!!!
原文地址:http://blog.csdn.net/lovesomnus/article/details/41172247