hibernate理解(转载)
来源:互联网 发布:linux 启动nginx命令 编辑:程序博客网 时间:2024/06/04 21:02
本文转自:http://blog.csdn.net/jiuqiyuliang/article/details/39078749
Hibernate,翻译过来是冬眠的意思,正好现在已经进入秋季,世间万物开始准备冬眠了。其实对于对象来说就是持久化。
持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。持久化是将程序数据在持久状态和瞬时状态间转换的机制。JDBC就是一种持久化机制。文件IO也是一种持久化机制。
我们从三个角度理解一下Hibernate:
一、Hibernate是对JDBC进一步封装
原来没有使用Hiberante做持久层开发时,存在很多冗余,如:各种JDBC语句,connection的管理,所以出现了Hibernate把JDBC封装了一下,我们不用操作数据,直接操作它就行了。
二、我们再从分层的角度来看
我们知道非常典型的三层架构:表示层,业务层,还有持久层。Hiberante也是持久层的框架,而且持久层的框架还有很多,比如:IBatis,Nhibernate,JDO,OJB,EJB等等。
三、Hibernate是开源的一个ORM(对象关系映射)框架。
ORM,即Object-Relational Mapping,它的作用就是在关系型数据库和对象之间做了一个映射。从对象(Object)映射到关系(Relation),再从关系映射到对象。这样,我们在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了(把关系数据库的字段在内存中映射成对象的属性)。
Hibernate的核心:
从上图中,我们可以看出Hibernate六大核心接口,两个主要配置文件,以及他们直接的关系。Hibernate的所有内容都在这了。那我们从上到下简单的认识一下,每个接口进行一句话总结。
1、Configuration接口:负责配置并启动Hibernate
2、SessionFactory接口:负责初始化Hibernate
3、Session接口:负责持久化对象的CRUD操作
4、Transaction接口:负责事务
5、Query接口和Criteria接口:负责执行各种数据库查询
注意:Configuration实例是一个启动期间的对象,一旦SessionFactory创建完成它就被丢弃了。
Hibernate的优/缺点:
优点:
1、更加对象化
以对象化的思维操作数据库,我们只需要操作对象就可以了,开发更加对象化。
2、移植性
因为Hibernate做了持久层的封装,你就不知道数据库,你写的所有的代码都具有可复用性。
3、Hibernate是一个没有侵入性的框架,没有侵入性的框架我们称为轻量级框架。
对比Struts的Action和ActionForm,都需要继承,离不开Struts。Hibernate不需要继承任何类,不需要实现任何接口。这样的对象叫POJO对象。
4、Hibernate代码测试方便。
5、提高效率,提高生产力。
缺点:
1、使用数据库特性的语句,将很难调优
2、对大批量数据更新存在问题
3、系统中存在大量的攻击查询功能
总结:
Hibernate可以使我们采用对象化的思维操作关系型数据库。
- hibernate理解(转载)
- hibernate 错误(转载)
- Hibernate总结(转载)
- container_of 理解(转载)
- 理解委托(转载)
- Hibernate入门 - Transaction(转载)
- 连接池-hibernate(转载)
- hibernate官方入门教程 (转载)
- hibernate面试总结(转载)
- hibernate缓存机制(转载)
- (转载)hibernate中的事务
- hibernate 延迟加载(转载)
- hibernate学习笔记(转载)
- hibernate 延迟加载(转载)
- Hibernate 学习笔记(转载)
- Hibernate知识总结(转载)
- 理解Javascript闭包(转载理解)
- (转载)理解 Linux 配置文件
- php 上传文件的大小限制
- 快速排序
- iOS内购错误汇总及解决方案
- Android Fragment 深度解析
- Android半透明等待界面及使用线程控制结束
- hibernate理解(转载)
- hdoj2040亲和数
- <LeetCode OJ> 47/46 Permutations (II / I)
- C#小例子之验证码
- javascript之类型陷阱
- hdu 1146 UVa10901 Ferry Loading III
- 周总结_2016/1/9
- phpstorm10注册方式
- android httpClient 支持HTTPS的2种处理方式