Hibernate征途(一)之初识
相见恨晚
很久以前,大概从开始接触数据库开始,就闪过这样一个想法,怎么看怎么觉得数据库表和vb的类模块很像,不是么?除了vb类模块还有函数外;越往下学觉得二者越像,尤其在三层时学到实体类的概念,我去,这二者基本合体了。除了组成,还有功能上,上次学术交流,说到类和类转移耦合时可以借住第三个类,同样,当表和表关系为多对多时,我们也可以借住第三张表;类似的还有类与类之间的关系,与数据库概念设计中的实体对应关系……
之所以对着二者的关系感兴趣,是因为还有一把记忆犹新的辛酸泪:
在.NET阶段,使用EA架构考试系统时,需要将表转换为实体类,当时50个表大概用了半上午,各种枯燥无味,当时一再想为什么没有类——表转换?再后来找到一款自动转换工具,为此还专门写了篇博客《数据库表转换为实体类》。
但疑问一直存在,二者如此相似,竟没有内在的关系?
直到遇到Hibernate,相见恨晚。
Hibernate
说正题,在我看来,Hibernate是JDBC的一种补充方案,它的高明之处在于,对象与对象之间的关系可以与表与表之间相互映射。如果把程序分为代码和数据两部分,从代码的角度来看,它将数据库操作转换为一种对象操作,即操作对象的增删改查,即可映射到数据的增删改查。
但是使用Hibernate有什么好处?
我的理解是,对象的操作即是面向对象的核心,可以用面向对象的思想操作数据,这样可以把更多的精力用于对程序质量的控制上,而不用分心于数据的操作,同样,与JSP之于UIer的作用类似,可以让不同位置的开发人员“术业有专攻”,提高开发效率。
如上提到“Hibernate是JDBC的一种补充方案”,为什么说是一种补充方案?框架毕竟有它的限制,无法替代JDBC能进行的更复杂的操作。
总结
.NET过度封装,使得很多内部原理无法深入了解,而JAVA,由于开放,已经给了我很多惊喜,Hibernate也是一个。
接下来,我会把Hibernate学习过程写成一个系列《Hibernate征途》,敬请期待。
Hibernate征途(一)之初识的更多相关文章
- Hibernate征途(七)之复合主键映射和集合映射
把这两种映射放到一起说,是因为这两种映射不像前面的复用型映射.数量和方向型映射那么分类鲜明,所以放到了这个“其他”里面. 复合主键映射 在关系模型中,复合主键和其他的主键方式没有很大区别,但是反映到对 ...
- Hibernate征途(六)之数量和关系映射
本来如果和关系模型一样,只需要一对一.一对多.多对多映射就够了,但是前面<Hibernate征途(四)之映射 序>中说到,对象模型中关联是有方向的,所以对一对多而言,就会产生一对多还是多对 ...
- Hibernate征途(三)之CRUD
上篇博客<Hibernate征途(二)之基础与核心>介绍了Hibernate的基础内容和核心内容,这篇博客简单实践一下.第一篇博客也说过Hibernate是一种JDBC的简化方案,既然是和 ...
- Hibernate征途(五)之继承映射和组件映射
之所以把这两种映射放到一起说,是因为二者都是以复用为目的,减少了代码和配置量,这是相同点:二者之间的不同点类似继承和实现的区别:继承的类是一个事物的抽象,而实现的接口仅仅是功能的抽象. 继承映射 如上 ...
- Hibernate征途(二)之基础与核心
根据我司优良传统,必然要由上向下.逐级深入,所以在钻到Hibernate细节之前,先从宏观上行欣赏一下Hibernate.为什么说是欣赏?大家可以自行查阅一下Hibernate知识外的信息,创始人和H ...
- Hibernate基础学习(一)—初识Hibernate
一.对象的持久化 狭义的理解: 持久化仅仅指把对象永久的保存到数据库中. 广义的理解: 持久化包括和数据库相关的各种操作. 保存: 把对象永久保存到数据库中. 更新: ...
- 初识Hibernate 缓存
生活就像一杯咖啡,让你我慢慢的品尝,品尝它的苦涩和甘甜...... 一.什么是Hibernate缓存. 解析:白话来说就是缓存数据的容器 官方标准点缓存:是计算机领域的概念,它介于应用程序和永久性数据 ...
- 初识hibernate框架之一:进行简单的增删改查操作
Hibernate的优势 l 优秀的Java 持久化层解决方案 (DAO) l 主流的对象—关系映射工具产品 l 简化了JDBC 繁琐的编码 l 将数据库的连接信息都存放在配置文件 l 自己的ORM ...
- 初识hibernate小案例
使用hibernate前需要导入相关JAR包. 1.它可以接受词文法语言描述,并能产生识别这些语言的语句的程序 2.是一个Java的XML API,类似于jdom,用来读写XML文件的 3.支持注解配 ...
随机推荐
- IOS 快速排序法
- (NSMutableArray *)QuickSort:(NSMutableArray *)list StartIndex:(NSInteger)startIndex EndIndex:(NSIn ...
- IOS 网络判断
Reachability *connectionNetWork= [Reachability reachabilityForInternetConnection] ; int status = [co ...
- STL源代码剖析 读书总结
<<STL源代码剖析>> 侯捷著 非常早就买了这本书, 一直没看, 如今在实验室师兄代码的时候发现里面使用了大量泛型编程的内容, 让我有了先看看这本书的想法. 看之前我对于泛型 ...
- mysql密码忘记如何处理
1,修改/etc/my.cnf添加添加skip-grant参数,重启mysql. 2,登录mysql mysql -uroot 3, 更新user中root的密码 use mysql; upd ...
- DNS,ARP,RARP,NAT,WINS的作用和区别
DNS 域名服务系统,是将域名(比如www.cnblogs.com)转成ip地址.arp 地址转换协议,是将ip地址转成mac地址(物理地址,可用ipconfig /all查看).rarp从mac转到 ...
- angular controller之间通信方式
对于日常开发中,难免会有controller之间通信需求.对于controller之间通信有两种方式可以做到. 用 Angular 进行开发,基本上都会遇到 Controller 之间通信的问题,本文 ...
- 改变VS2013的菜单栏字母为小写
REG ADD HKCU\Software\Microsoft\VisualStudio\12.0\General /v SuppressUppercaseConversion /t REG_DWOR ...
- Struts2 工作流程
Struts2使用了WebWork的设计核心(XWork),在内部使用拦截器处理用户请求,从而允许用户业务逻辑控制器和ServletAPI分离.Struts2内部是一个MVC架构,Struts2 的核 ...
- C语言-getopt函数
#include<unistd.h> int getopt(int argc,char *const argv[],const char *optstring); extern char ...
- pcl1.7.2_vs2013_x64工程配置
pcl1.7.2_vs2013_x64工程配置 C:\Program Files\PCL 1.7.2\include\pcl-1.7;C:\Program Files\PCL 1.7.2\3rdPar ...