菜鸟学习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语言中用来规范客户端程序如何来访 ...
随机推荐
- 读书list
1. TCP/IP 1.1 图解 TCP/IP 1.2 TCP/IP 详解 2. HTTP 2.1 HTTP 权威指南
- Jmeter如何设置断言
1.打开飞机订票网站,登录后,确定要查找的关键字为reservation :2.在录制的登录脚本里,添加察看结果树监听器:3.运行一遍脚本:4.在察看结果树里查找reservation文本,并定位页面 ...
- break 和 continue
break 和 continue 相同点: 都 用在循环体内,如 switch.for.while.do while的程序块中,用于控制程序循环语句的执行 不同点: break可以离开当前switch ...
- sublime Text及package control的安装
1.下载并安装sublime Text2http://www.baidu.com/s?wd=sublime&rsv_spt=1&issp=1&f=8&rsv_bp=0& ...
- 洛谷P2731 骑马修栅栏 Riding the Fences
P2731 骑马修栅栏 Riding the Fences• o 119通过o 468提交• 题目提供者该用户不存在• 标签USACO• 难度普及+/提高 提交 讨论 题解 最新讨论 • 数据有问题题 ...
- Activity使用Dialog样式导致点击空白处自动关闭的问题
将Activity设置成窗口的样式实现Dialog或者Popupwindow效果在开发中是很常用的一种方式,在AndroidMenifest.xml中将需要设置的Activity增加android:t ...
- 在PHP5.3以上版本运行ecshop和ecmall出现的问题及解决方案
ecshop 问题一:商城首页报错 Strict Standards: Only variables should be passed by reference in D:\wamp\ecshop\i ...
- C# 排列组合
排列组合的概念 排列:从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个元素中取出m个元素的一个排列(Arrangement). 组合:从m个不同的元素中,任取n(n≤m)个元 ...
- javascript计算两个时间差
其实,javascript计算时间差的方式非常简单,如果是默认的Date()类型,直接相减就是相差的毫秒数. var d1 = new Date('2016/03/28 10:17:22'); var ...
- 【Linux】自动化部署可信任登录
Linux信任登录,免密码登录的脚本: 需要安装expect,可以yum也可以编译安装,编译后注意脚本中的expect路径. rsa.exp #!/usr/bin/expect ########### ...