Hibernate-01-持久层发展过程

上一篇:     下一篇:

 

先引个头,真正开发使用Hibernate也不过一年,站在只满足于业务开发角度,我总是平平而过。

 

最近想往真正架构师前行,在数据持久层上需要更加深入理解一下设计思路与原理,希望同道朋友指点与指正

 

先看看做为持久层框架应该具备的特性:(这里主要指数据库持久层的特性)

 

1,数据库操作(CRUD)进行完整的封装:

      主要指增删改查等操作。

 

2,事务机制:

      原子性,一致性,隔离性,持久性。

 

3,扩展性:

      可以新增或修改类的属性,或从一个数据库产品移植到另一个数据库产品;能满足应用开发人员与持久层管理人员开展各自的工作。

 

4,主键支持:

      主键的生成或数据库的生成方式。

 

5,游标:

     

 

6,代理:

      对象关联之间,可通过代理对象,从而现实lazy。

 

7,支持原始sql

      由于一些数据库特色,在不考虑移植性时,为提高性能而做的选择。

 

8,不同数据库的支持:

      支持多种主流数据库

 

9,多种连接池共生:

      支持多种数据库或多个数据库连接池被一个对象应该程序访问

 

10,开发语言支持:

      持久层是为应该程序服务的,支持当前开发语言。

 

11,对象与关系数据库的映射转换:

      支持从对象到关系数据库之间的映射关系。

 

12,对象与关系数据库的结构生成:

      支持通过对象或关系数据库生成映射方的文件生成。

 

13,关系遍历:

      支持对象访问子对象的遍历操作。

 

14,缓冲区:

      支持缓存,以提高性能。

 

15,锁:

      支持访问数据时,指定悲观锁或乐观锁。

 

16,支持配置:

      支持通过配置文件,载入需要的各种信息,如映射,数据库连接等。

 

 

基于以上的要求,设计一个针对数据库持久层,我们要将业务层与关系数据库分开,让两者的变化不会对对方造成直接的影响。这是根本目的,现在有一些团体在使用Hibernate时,在业务中加入操作数据库的代码设计在其中,那hibernate框架就没有原本的作用了,他的作用就是隔离,再隔离。

 

有人说直接的sql性能更好,其实性能这东西就与编程语言一样,最原始的汇编肯定是最好的;但是高级的语言如C++/Java也还可以接受。

 

使用Hibernate需要一个到sql的转换,那么,你想使用最原始的sql的性能,使用hibernate时,就要了解他的转换规则,做到这点,其实在基本的使用上,Hibernate的性能还是不会差太多,再通过设置缓存,把在查询上丢失的性能补回一些,这些优化手段,在后续再描述。

 

 

在了解数据库持久层后,如果没有现成的框架,你怎么来实现呢?想想自己的思路,试着再想想。

 

想完了,再回头来看Hibernate的设计,他在事务处理上,连接池上,映射关系上,查询转换上,缓冲(缓存)支持上,都是怎么做的?它用了哪些设计模式呢?

 

 

 

关于思路,我就不多说了,下面的02中将对hibernate的基本使用做一下描述,再通过对几大核心类的分析,从而简单的了解hibernate的运行机制。

 

先列出下面的目录

 

Hibernate-01-持久层发展过程

Hibernate-02-一般使用

Hibernate-03-运行机制

Hibernate-04-核心Configuration

Hibernate-05-核心SessionFactory

Hibernate-06-核心Session

Hibernate-07-核心Transaction

Hibernate-08-核心Query和Criteria接口

Hibernate-09-乐观锁与悲观锁

Hibernate-10-拦截器

Hibernate-11-性能-抓取策略

Hibernate-12-性能-二级缓存

Hibernate-13-性能-管理缓存

Hibernate-14-性能-原理集合性能

Hibernate-15-性能-监测

 

Hibernate-16-总结

你可能感兴趣的:(hibernate)