数据导航问题
遍历对象网络是访问面向对象的数据最自然的方式
提高数据访问代码性能,将请求数据库的次数减到最少。所以使用表联接。
只有当对象被初次访问时,所有对象持久化解决方案才提供抓取关联对象的数据的功能。这种piecemeal的数据访问在关系型数据库上下文中效率很低,因为n+1查询问题。最后,选择抓取不需要的东西到内存。
Hibernate提供了从数据库中有效,透明的抓取对象网络到应用程序中
不匹配的代价
主要成本在于模型化方面。通常扭曲领域模型和被实现的类,知道它们与SQL数据库schema相匹配。更深层的原因是JDBC API本身。JDBC和SQL提供了面向语句(命令)的方法,把数据从SQL数据库移进移出。
1.3持久层和其它层
在一个中型或大型应用程序中,按关注点(持久化、表现、工作流、业务逻辑)组织类比较有意义。表示关注点的代码层--典型面向对象的架构
1.3.1 分层架构
三层 公认高级应用程序架构 如附件所示
表现层——用户界面逻辑,负责页面及导航
业务层——负责实现业务规则或被用户理解为问题领域一部分的系统需求
持久层——负责向/从数据存储器 存/取数据的组件,必须包含一个业务领域实体的模型。
数据库——系统状态实际的持久化的表示
辅助和工具类——不是一个层,因为不遵循分层架构中中间层依赖原则
1.3.2用SQL/JDBC手工编写持久层
推荐使用已存在的优秀解决方案,满足业务需要和技术需求。
1.3.3使用序列化
java 内置的持久化机制:序列化(对象网络——>字节流)
序列化之后的关联对象网络只能作为一个整体访问;没有反序列化整个流,就不可能从流中获取任何数据。
1.3.4 面向对象的数据库系统
未广泛采用
1.3.5其他选项
XML持久化是序列化模式的变形:允许通过一个标准化的工具接口来轻松的访问数据,从而解决了字节流序列化的一些限制。但是会遇到对象/层次结构不匹配??XML对数据管理没有继承能力。
1.4 ORM(Object/Relational Mapping)——对象/关系映射
1.4.1什么是ORM
利用描述对象和数据库之间映射的元数据,自动(透明)的把Java应用程序中的对象持久化到关系型数据库中的表。
ORM解决方案包含4部分:
在持久化类对象上执行基本CRUD操作的一个API??
用于指定引用类或者类属性查询的一种语言或API
用于指定映射元数据的一种工具
用于实现ORM的一项技术,与事务对象交互,执行脏检查、延迟关键抓取及其他优化功能
使用ORM,应用程序与ORM API和领域模型类交互,从底层的SQL/JDBC中被抽象出来。
4个ORM质量等级
1.纯关系
2.轻量对象映射
3.中等对象映射
4.完全对象映射
1.4.2一般的ORM问题
对于任何数据访问技术共同的问题
事务和并发性
高速缓存管理
1.4.3为什么选择ORM
ORM和Hibernate的益处
1.生产力,Hibernate去除了很多琐碎的工作。
2.可维护性 更少的代码行,强调业务逻辑;提供了关系表示法和对象模型间的缓冲,微小的变化不会传递到另一个模型??
3.性能 在有时间限制的项目中,手工编写的持久化允许你做一些优化。Hibernate始终允许使用更多的优化。自动的持久化提高开发人员的工作效率。
4.供应商独立性 ORM将应用程序从底层的SQL数据库和SQL方言中抽象出来
1.4.4Hibernate、EJB3和JPA简介
Hibernate是一个完全的ORM工具
1.5小结
- 大小: 9.3 KB
分享到:
相关推荐
### Hibernate实战知识点解析 #### 一、书籍简介与评价概览 《Hibernate实战》是一部备受赞誉的关于Hibernate框架的专业书籍,被广泛认为是最权威的Hibernate著作之一。该书由Hibernate项目的核心开发者撰写,因此...
### Hibernate4实战之第七部分:最佳实践 #### 设计细颗粒度的持久类并使用`<component>`实现映射 在Hibernate中,细颗粒度的持久类是指将实体中的复杂属性拆分成单独的对象进行管理。例如,对于一个用户实体中的...
### Hibernate4实战之第五部分:Hibernate的事务与并发 #### 一、事务基础概念 **事务(Transaction)** 是一组逻辑上紧密相连的操作集合。在数据库领域,事务具备ACID特性: - **原子性(Atomicity)**:事务内的所有...
《Hibernate技术深度解析:中文文档与实战指南》 在Java世界中,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本文将深入探讨Hibernate的核心概念,结合提供的中文文档,以及...
读书笔记:基于struts+hibernate+spring+easyui+mysql的网上商城项目实战源码
而Hibernate Annotations是Hibernate框架的一个重要组成部分,它引入了基于注解的元数据,使得代码更加简洁、易读。本篇将详细探讨Hibernate Annotations 3.4.0.GA版本中的核心概念、特性以及实际应用。 一、...
### 2. 第二级缓存:SessionFactory 缓存 第一级缓存是针对单个 Session 的,而第二级缓存则在整个 SessionFactory 生命周期内共享。它可以跨多个 Session 提供数据缓存,从而提高性能。第二级缓存可配置为不同的...
2. **Criteria API**:提供动态构建查询的方式,更易读且灵活。 3. **QBC(Query By Criteria)**:基于对象的查询,提供更强大的查询构建能力。 4. **Criteria API与DetachedCriteria**:支持离线查询,可以在不...
SSH框架整合实战教程读书笔记(七)主要聚焦于Spring、Struts和Hibernate这三大Java Web开发框架的集成应用。在本教程中,我们将深入探讨如何将这三个强大的工具结合在一起,以构建高效、可维护的Web应用程序。源码...
文档"Hibernate_二级缓存总结 开发技术 - Java.doc"可能详细阐述了如何配置和使用Hibernate的二级缓存,包括配置文件的设置、缓存提供者的选用、实体和集合的缓存配置,以及实战中的优化技巧。阅读该文档将有助于...
6. **hibernate.format_sql**:当设置为`true`时,Hibernate会格式化输出的SQL,使其更易读。 7. **hibernate.hbm2ddl.auto**:控制自动创建、更新或验证数据库模式的行为。可能的值包括`create`、`update`、`...
5. Criteria API和HQL(Hibernate Query Language):提供面向对象的查询方式,比SQL更易读,更安全。 四、《Hibernate参考文档.chm》 这份文档详细介绍了Hibernate的API、配置、使用方法和最佳实践,是开发者解决...
2. 在 Hibernate 配置文件中启用二级缓存。 3. 在实体类上添加 `@Cacheable` 注解或者在映射文件中配置 `<cache>` 元素。 4. 配置实体类的缓存策略,例如使用 `@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)` ...
2. **缓存策略**:二级缓存有四种策略可供选择:`read-only`(只读)、`nonstrict-read-write`(非严格读/写)、`read-write`(读/写)和`transactional`(事务型)。不同的策略对应不同的并发控制和性能特性。 3. ...
第2版的开发手册是理解Hibernate早期版本的基础,尽管较旧,但它仍然涵盖了许多至今仍然适用的基础知识。对比不同版本的开发手册,开发者可以了解到Hibernate的发展历程,理解新版本的变化,从而更好地适应框架的...
《Hibernate源码解析与实战应用》 Hibernate,作为一款强大的Java对象关系映射(ORM)框架,极大地简化了Java数据库编程。本资源包含了hibernate的源码,为开发者提供了深入学习和研究的宝贵材料。通过这个源码,...
2. **事务管理**: 正确设置事务边界,避免脏读、不可重复读和幻读等并发问题。 3. **自定义服务**: 当标准服务无法满足需求时,可以编写自定义服务并将其注入到Service Register中。 4. **使用SessionFactory的最佳...
2. **提高开发效率**:使用Hibernate可以更快速地完成数据库相关的开发任务,因为它封装了很多底层细节。 3. **易于维护**:由于使用的是面向对象的方式来处理数据,因此代码更加清晰、易读且易于维护。 4. **跨...