Hibernate与持久化概述
2015-12-17 21:12
225 查看
hibernate作为一个成熟且强大的持久层框架,集诸多持久层设计思想之大成,是一种ORM(对象关系映射)映射工具,能建立面向对象的域模型与关系模型之间的映射。
一、分层体系结构
二、MVC模式
持久层是在MVC三层架构的基础上提出的。在提出持久层之前,业务逻辑层在实现业务逻辑的同时,还需要访问数据库,这为业务逻辑的扩展增加了难度。
有了持久层,业务逻辑层只需负责业务逻辑的实现,对数据的操作则交给持久层,使每一段业务逻辑代码的目的更明确,对后台数据库的改变也变得非常简单。
三、持久层的意义在于
四、ORM(Object-Relational Mapping)的解决方案
五、ORM技术的优缺点
ORM作为对象到关系的映射,具有以下优点
ORM技术的缺点
六、域模型
七、常用域对象的持久化技术
八、Hibernate特点如下:
Hibernate在java对象与关系数据库之间起到了一个桥梁的作用,负责两者之间的映射。在hibernate内部还封装了JDBC技术,向上一层提供面向对象的数据访问API接口。
①它负责协调软件与数据的交互,提供了管理持久化数据的完整方案,让开发者能够专注于业务逻辑的开发;
九、Hibernate核心接口
①Configuration接口
②SessionFactory接口
③Session接口
④Transaction接口
⑤Query和Criteria接口
一、分层体系结构
分层体系结构定义了实现不同关系代码之间的接口,允许关系实现方式的改变不会对其它层的代码造成重大的破坏。 同时,分层也决定了其间出现的中间层的类型。分层规则如下: ①层由上到下进行通信。每一层仅依赖于其直接的下层; ②除了其直接下层,每一层都不知道任何其它层。
二、MVC模式
在分层体系结构中,最常见、最简单也是最有效的就是MVC(Model View Control)模式了。 ①表示层,即MVC模式中的V,提供与用户交互的界面。GUI和Web页面是表示层的两个典型的例子。 ②业务逻辑层,即MVC模式中的C,用于实现各种业务逻辑,它相当于整个系统的大脑,负责思考数据如果取得,如何处理以及数据流向何处。 ③数据库层,即MVC模式中的M,代表数据实体,也可以是数据库,负责存放和管理应用程序的持久性业务数据。
持久层是在MVC三层架构的基础上提出的。在提出持久层之前,业务逻辑层在实现业务逻辑的同时,还需要访问数据库,这为业务逻辑的扩展增加了难度。
有了持久层,业务逻辑层只需负责业务逻辑的实现,对数据的操作则交给持久层,使每一段业务逻辑代码的目的更明确,对后台数据库的改变也变得非常简单。
三、持久层的意义在于
持久层封装了数据访问细节,为业务逻辑层提供了面向对象的API ①代码可重用性高,能够完成所有的数据库访问操作 ②能够支持多种数据库平台 ③具有相对独立性,底层数据发生变化时,只需修改持久层代码,只要对其上层提供的API不变,则不用修改业务逻辑层的代码。
四、ORM(Object-Relational Mapping)的解决方案
①在持久化类的对象上执行基本的CRUD(添加、查询、更新和删除)操作的一组API; ②用于指定查询的一种语言或一组API,这些查询会引用类和类属性; ③用于指定映射元数据的工具; ④实现ORM的一项技术,用来与事务对象交互以完成脏读、关联数据的延迟加载和其他优化功能。
五、ORM技术的优缺点
ORM作为对象到关系的映射,具有以下优点
①提高了开发效率。 由于ORM可以自动对实体对象与数据库中的表进行字段与属性的映射,所以实际操作中已经不再需要一个专用的,庞大的数据库访问层。 ②ORM提供了对数据库的映射,能够像操作对象一样从数据库中获取数据,而不用直接进行SQL编码
ORM技术的缺点
①系统结构方面。采用ORM的系统一般都是多层系统,系统层次增加了,效率就会降低 ②性能方面。主要体现在对持久层的提取和对数据的加工处理上。 采用ORM时,系统可能将全部的数据提取到内存对象中,然后再进行过滤盒加工处理,这样就容易产生性能问题 ③对象持久化方面。ORM一般会持久化所有的属性,这对有些应用是不希望发生的。
六、域模型
域模型是对一个真实事物的模拟实现,是抽象的结果。它可以代表业务领域中的人、地点、事物或是概念,它能够真实地反映出模型中元素之间的关系。 构成域模型的基本元素是对象,可以分为实体域对象、过程域对象和事件域对象3种。 域对象之间的关系 ①关联:指类之间的引用关系 ②依赖:指类之间的访问关系 ③聚集:指的是整体与部分之间的关系 ④一般化:指类之间的继承关系
七、常用域对象的持久化技术
①JDBC直接访问数据库。Java DataBase Connectivity standard是一个面向对象的应用程序接口 ②主动域对象模式。 ③ORM模式 ④CMP模式(Container-Managed Persistenc)容器管理的持久化 ⑤JDO模式(Java Data Object)是java对象持久化的新规范。
八、Hibernate特点如下:
Hibernate在java对象与关系数据库之间起到了一个桥梁的作用,负责两者之间的映射。在hibernate内部还封装了JDBC技术,向上一层提供面向对象的数据访问API接口。
①它负责协调软件与数据的交互,提供了管理持久化数据的完整方案,让开发者能够专注于业务逻辑的开发;
②应用者不需要遵循太多的规则和设计模式,能够灵活地运用; ③它是一个开放源代码的映射框架,对JDBC只做了轻量级的封装,让java程序员可以随心所欲地运用面向对象的思想操纵数据库,无需考虑资源的问题。
九、Hibernate核心接口
①Configuration接口
Configuration类是hibernate的入口,负责在hibernate初始化时加载默认文件路径下的配置文件信息(hibernate.properties或hibernate.cfg.xml)到计算机内存, 并通过它的对象加载指定的映射文件到内存,最后创建一个SessionFactory对象,把读入的配置信息拷贝到SessionFactory对象的缓存中。
②SessionFactory接口
SessionFactory负责创建Session实例,每个SessionFactory类的实例对应一个数据库。 SessionFactory类的实例是重量级(下面还要提到"轻量级"的概念,区分它们是根据对象占用缓存的大小)的。 因为它占用很大的缓存,用来存放预定义的SQL语句和映射元数据等,所以每个数据可最好只创建一个SessionFactory实例,在初始化时完成。 它的线程是安全的,可以被应用的多个线程共享。
③Session接口
Session是hibernate持久化操作的基础,它负责管理所有与持久化相关的操作,例如数据库的存取、事务的管理和对象的生命周期等。 Session与SessionFactory恰恰相反,它不是线程安全的,应避免多个线程共享一个Session;它是轻量级的,创建和销毁不会浪费太多的资源,可以为每个请求分配一个Session,在每次请求过程中及时创建和销毁Session实例,减少资源的浪费。
④Transaction接口
Transaction类负责hibernate的数据库事务。其实hibernate本身并不具有管理事务的能力,只是对底层事务接口进行了封装,这样做有利于在不同的环境或容器中移植,也可以直接访问底层的事务接口,但那样不利于应用的移植。
⑤Query和Criteria接口
Query和Criteria接口负责hibernate的查询操作 Query实例封装了一个HQL(Hibernate Query Language)查询语句。HQL与SQL有些类似,只是HQL是面向对象的,它操作的是持久化类的类名和该类的属性名,而SQL操作的是表名和字段名 Criteria实例完全封装了字符串形式的查询语句,它比Query实例要面向对象,它更适合于执行动态查询。
相关文章推荐
- Swift学习笔记1
- 如何参加开源项目
- poj3255次短路算法
- 如何 在Mac OS X 上的 Appium 上 Run *.app 文件
- C++ 希尔排序算法
- 临时无视CSS3的transition直接设置样式
- C++对于大型图片的加载缩放尝试
- Android 判断当前网络状态
- 关于在datepicker中,只选年月
- java畅谈2
- Validate Binary Search Tree
- 小例子:java利用poi读取excel中数据并导入数据库
- 黑马程序员 - C语言 -学生信息管理系统
- 内容太长,显示其中的一部分
- Hadoop的datanode,namenode无法启动
- Appium GUI 功能摸索
- Matlab实现灰度图像的水平和垂直投影
- Java畅谈1
- 2015年你必须学习的编程语言和前端框架
- 数据结构期末总结