菜鸟学习Hibernate——持久层框架
一、Java操作数据库的阶段。
Java对数据库进行操作经历了三个阶段。
1.1操作JDBC阶段
这个阶段就是利用JDBC类来操作数据库。这个阶段出现了两个问题:
代码过度重复:在每一次数据库操作的是后都要编写相似的代码。实际上每一次这些代码有的是只是SQL语句改变但是还是得写一遍。让我想起第一次用.NET做机房收费系统的时候就写查询的时候除了SQL语句不一样以外其他都一样。
不能突出业务:整个代码都是数据库处理的代码,体现不出业务操作逻辑。
1.2封装JDBC阶段
这个阶段其实就是像.NET一样写SQLHelper把一些操作封装成方法,用到了调用就行了。封装一些常用的操作比如:加载数据库驱动,执行更新SQL执行,查询SQL,关闭对象,关闭数据库连接等。
1.3ORM阶段
ORM(ObjectRelational Mapping)是对象关系映射。这个是对JDBC进行了封装之后,能够方便地实现数据库的操作。ORM它是一种为了解决面向对象与关系数据库存在的互补匹配的现象的技术。ORM通过使用描述对象和数据库之间映射的元数据,将Java程序中的对象自动持久化到关系数据库中。ORM的实现产品有Apache
OJB,Cayenne,Jaxor,iBatis,jRelationalFramework和现在学的Hibernate等。
二、持久层框架
iBatis:
使用ibatis提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate 实现ORM而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等“全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统
设计提供了更大的自由空间。作为“全自动”ORM实现的一种有益补充,ibatis 的出现显 得别具意义。
Hibernate:这是目前最流行的持久层框架,它是对JDBC的轻量级的对象封装,可以用在任何JDBC可以使用的场合。
三、总结
持久层框架能为我们提供更方便快捷的开发。一个成熟的持久层框架给我们带来了一下好处:
·减少了乏味的代码
持久层框架封装了数据库持久层大多数技术细节,让我们可以从JDBC的编码中解脱出来,将我们的精力更多的放到有价值的工作中去。
·更加面向对象设计
ORM为系统设计提供了更加自然的实现方式。我们可以通过ORM将系统中的对象自动映射到各个数据表中,从而编码中只需关心对象的相关属性无需在纠缠于JDBCResultSet中的字段数据
·更好的性能
很多持久层框架提供了优秀的性能优化机制,这些优化的综合使用大大提升了系统性能。
·更好的移植性
基于Java的跨平台特性,我们的系统可以在不同操作系统之间切换。但由于数据库之间的差异,系统在数据库平台之间的迁移却遇到了阻力。上面提及的这些成熟持久层框架,由于设计上的良好隔离,从而提供了对不同数据库的良好支持,我们只需简单地修改其配置参数,即可实现底层数据库的切换。
菜鸟学习Hibernate——持久层框架的更多相关文章
- MyBatis持久层框架学习之01 MyBatis的起源和发展
一.MyBatis的简介 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyB ...
- Mybatis学习之自定义持久层框架(七) 自定义持久层框架优化
前言 接上文,这里只是出于强迫症,凭借着半年前的笔记来把之前没写完的文章写完,这里是最后一篇了. 前面自定义的持久层框架存在的问题 Dao层若使用实现类,会存在代码重复,整个操作的过程模版重复(加载配 ...
- Hibernate数据库持久层框架
Hibernate是一种Java语言下的对象关系映射解决方案. 它是使用GNU宽通用公共许可证发行的自由.开源的软件.它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架.Hib ...
- Java数据持久层框架 MyBatis之API学习一(简介)
对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...
- Hibernate: 数据持久层框架
Hibernate 是一种Java语言下的对象关系映射解决方案. 它是使用GNU宽通用公共许可证发行的自由.开源的软件.它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架.Hi ...
- Mybatis学习之自定义持久层框架(六) 自定义持久层框架:完善CRUD方法并进行测试
前言 没想到会等到半年以后才来写这篇文章,我已经不记得当初自己想要在这篇文章中写什么了,还好有一些零散的笔记留着,就对照着上一篇文章及零散的笔记,把内容给补充完吧. 完善CRUD方法 完善Defaul ...
- Mybatis学习之自定义持久层框架(三) 自定义持久层框架:读取并解析配置文件
前言 前两篇文章分别讲解了JDBC和Mybatis的基本知识,以及自定义持久层框架的设计思路,从这篇文章开始,我们正式来实现一个持久层框架. 新建一个项目 首先我们新建一个maven项目,将其命名为I ...
- Mybatis学习之自定义持久层框架(二) 自定义持久层框架设计思路
前言 上一篇文章讲到了JDBC的基本用法及其问题所在,并提出了使用Mybatis的好处,那么今天这篇文章就来说一下该如何设计一个类似Mybatis这样的持久层框架(暂时只讲思路,具体的代码编写工作从下 ...
- Mybatis学习之自定义持久层框架(一) 为什么要用框架而不直接用JDBC?
前言 说起Mybatis,相信大家都不会感到陌生,它是一款优秀的持久层框架,应用于java后端开发中,为客户端程序提供访问数据库的接口. 我们都知道,JDBC是Java语言中用来规范客户端程序如何来访 ...
随机推荐
- 高校应该使用 Drupal 的10大理由
使用 Drupal 已经成为全球顶尖高校中的一种潮流,它已经被全球数以百计的院校选择并应用,无论是哈佛.斯坦福.杜克.布朗.罗格斯.剑桥.耶鲁还是其它众多知名高校,都已经选择 Drupal 作为它们理 ...
- Orchard官方文档翻译(七) 导航与菜单
原文地址:http://docs.orchardproject.net/Documentation/Navigation-and-menus 想要查看文档目录请用力点击这里 最近想要学习了解orcha ...
- Flex对象的Clone & Copy浅析
在flex中有时候会用到ObjectUtil.clone和ObjectUtil.copy方法.下面是官方API的注释. 克隆指定对象,并返回对该克隆的引用.该克隆使用本机序列化技术生成.这意味着在克隆 ...
- Java创建WebService服务及客户端实现
简介 WebService是一种服务的提供方式,通过WebService,不同应用间相互间调用变的很方便,网络上有很多常用的WebService服务,如:http://developer.51cto. ...
- 在Win7下要通过某个 线程 来调用SavaDialog文件选择框的问题
如果 在Win7下要通过某个 线程 来调用SavaDialog文件选择框的代码 选择窗口 有时会出不来 需要设置如下: ThreadthreadOfRec = new Thread(Reciv ...
- Eclipse Egit 安装
help->Install new software-> 在 work within 中输入以下网址 安装地址: http://download.eclipse.org/egit/upda ...
- 著名的二分查找的BUG
int binarySearch(int a[], int key, int length) { int low = 0; int high = length - 1; while (low < ...
- 浅谈C++虚函数
很长时间都没写过博客了,主要是还没有养成思考总结的习惯,今天来一发. 我是重度拖延症患者,本来这篇总结应该是早就应该写下来的. 一.虚函数表 C++虚函数的机制想必大家都清楚了.不清楚的同学请参看各种 ...
- MVC5使用SignalR进行双向通信(1)
MVC5使用SignalR进行双向通信 (1) 配置Signal 在NuGet中通过 install-package Microsoft.AspNet.SignalR 命令进行安装 在Scripts文 ...
- 在C#中对Datatable排序【DefaultView的Sort方法】
在C#中对Datatable排序,[DefaultView的Sort方法] 代码如下: DataTable dt = new DataTable(); dt.Columns.Add("ID& ...