Hibernate (一)hibernate入门

赵嘉悦
2023-12-01

     在总结hibernate这里之前需要和之前接触过的关系模型做一个大概的总结。关系模型中,诸如视图、存储过程的使用,在开发之初也带来很多方便。但随着维护工作的加大,总会出现下面这样几个问题:

 

1)很多业务逻辑工作交给了视图、存储过程。

例如:调试一个几十行的视图,嘿嘿,不能这样任性。所以当数据和业务逻辑揉做在一起是在维护时是非常头疼的。

2)数据库应该对开发者应该是透明的

这句话怎么讲呢?在学习数据库之初,很多时候既是DBA、也是架构师、也是程序猿。最后我们在编程时不知不觉直接select*t_user ,这样直接操作了数据库表。但是一般情况下是,程序猿是无法知晓数据库结构的。

3)不利于调试

其实在第一点中也讲到了,大家肯定有着这样的体会。程序调试了半天,最后发现竟然是存储过程少了个空格。是不是觉得顿时心塞,你懂得。

之上都是对关系模型在使用过程中的一些感受,而后接触到概念模型之后,发现概念模型在面向对象上更利于我们理解,概念模型大家都知道是在软件分析之初来构建的,用来帮助开发人员之间交流和理解软件的正确需求的,而在软件设计的阶段就需要使用到域模型了。


 

域模型

 


域模型分为实体域对象、过程域对象、事件域对象。


 

实体域对象就是我们生活中常见的,诸如学生、教师、试卷。结合J2EE,可以理解为POJO,何为POJO就是最为干净的实体类,不涉及业务逻辑。

 

过程域对象指的是咱们系统中的业务逻辑,诸如考试、它们是依托实体域存在的。结合J2EE,就是我们使用的EJB中的sessionbean了,j2se中对应具有行为的javabean了。

 

事件域这个不怎么理解,看网上的资料讲的是一些系统中自动触发的事件,诸如异常、错误等。


 

持久化

 

无论是域模型还是关系模型都是用来持久化数据到硬盘上的,对比之上域模型在和关系模型时,两者在实现上有差别。域模型在内存中为对象,以及对象之间的关系;而关系模型则表现为表和表之间的关系。所以这个持久化就是将数据从内存存储到硬盘的过程,称之为持久化。当然对于域模型来讲,并不是所有的域模型都需要持久到数据库,例如sessionbean就是无需持久到数据库。

 

持久化的几种模式

 

Jdbc

 

在学习java之初我们大多使用的是jdbc来直接操作数据库的。主要是这么几个对象的使用


drivermanager:负责创建数据库连接
connection:连接数据库
statement:执行sql
preparedStatement:和statement类似,只不过还具有预定义sql语句的功能。
resultset:结果集。
示例:
//获得连接
Connectionconnection=java.sql.DriverManager.getConnection(url,username,pwd);
//定义sql语句
Connection.prepareStatement(strsql);


 

ORM

 

对象关系映射,主要解决的还是域模型和关系模型的联系。通常用xml来定义之间的关系,然后相应的orm中间件会参照对应的关系来将制定的域模型来映射到数据库表中。例如:hibernate是主要通过sessionfactory来工作的,sessionfactory在读取映射关系之前会配置对应的sql语句,最后再调用相应的方法执行对应的sql语句。诸如orm的应用很多,hibernate是其中一种,还有toplink等。

 

以上是最为常用的两种用来持久化模式,都为解决关系模型的出现的一些问题提供好的解决方案。使得开发人员更加更好的理解面向对象的持久化,更多的使用的还是第三方的商业持久化中间件,例如JPA以及hibernate。

 类似资料: