在我们对Hibernate的内容进行了解时,肯定会遇到两个概念:DAO和ORM。相信那时候,很多人对这两个和Hibernate之间的作用不是很了解。本篇我们将对Hibernate的原理进行分析,从DAO的简化和ORM的实现原理分别深入探讨,找出Hibernate的工作机制。
1.DAO的简化
(1)JDBC编程中,开发者通过在DAO层编写INSERTSQL语句插入数据库,编写UPDATE SQL更新数据库,编写DELETE语句删除数据,通过SELECT语句查询数据。在hibernate中原理也是一样的,只不过hibernate充当了DAO层,根据POJO与实体类的映射配置自动生成相应的SQL语句。从控制台输出可以看到hibernate生成的SQL语句。
(2)JDBC中的SQL语句是由开发者事先写好的,而hibernate中的SQL是动态生成的。因此如果实体类发生变化,则在JDBC中需要修改所有的相关SQL语句,这样会使工作量加大,而在hibernate只需要修改实体类配置。
2.ORM的实现原理
在Java领域大家对Hibernate的讨论很多,比如它的优缺点、如何应用、错误如何解决以及把它和Struts/Spring等框架相结合作为整个系统的解决方案。在这里我想和大家探讨一些更深层次的话题,那就是Hibernate是如何实现ORM的功能?如果让我们自己开发一款实现ORM功能的框架需要怎么做?其实这些问题就是围绕着一个词,那就是“映射”,如果我们知道如何实现这种映射那么我们也能够开发出自己的一款ORM框架。会使用Hibernate的开发人员都知道,在使用它实现ORM功能的时候,主要的文件有:映射类(*.java)、映射文件(*.hbm.xml)以及数据库配置文件(*.properties或*.cfg.xml),它们各自的作用如下。
(1)映射类:它的作用是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象。
(2)映射文件:它的作用是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。
(3)数据库配置文件:它的作用是指定与数据库连接时需要的连接信息,比如连接哪中数据库、登录用户名、登录密码以及连接字符串等。在这三种主要的文件中,映射类为普通Java源文件、映射文件为XML格式、数据库配置文件为Properties格式或者是XML格式。想理解“映射”首先我们需要知道如何解析这三种文件,即解析XML格式文件、解析Properties格式文件和解析Java类文件。
以上就是Hibernate在java中的原理探究,可以看出,其实这DAO和ORM都是一种功能的使用,只是在Hibernate框架下,发挥出更加出色的效果,相信大家已经对Hibernate的工作原理有所了解。



