【Hibernate】概述

18 篇文章 2 订阅
13 篇文章 0 订阅
【回顾】
    在之前的一段时间,我们详细学习了SSH经典框架中的Struts和Spring,本篇博客,将开始Hibernate的学习,主要是对Hibernate框架的一个概述。
【前言】
    在Java发展的初级阶段,直接调用JDBC几乎是数据库访问的唯一手段。但随着设计思想和java技术本身的进步与发展,出现了许多JDBC的封装技术,这些技术为我们的数据库访问层实现提供了更多的选择。
    目前主流的几套JDBC封装框架包括:Hibernate、Apache、iBatis以及J2EE框架中的CMP等。这些框架以优良的设计大大提高了数据库访问层的开发效率,并且通过对数据访问中各种资源和数据的缓存调度,实现了更佳的性能。
【优势】
    在项目或者产品研发中引入成熟的持久层框架实现,能给我们带来什么好处呢?
    1. 减少重复的代码。
    持久层编码大多是些固定的内容:获取数据库连接、执行SQL语句、关闭数据库连接...... 而持久层框架封装了数据库持久层的大多数技术细节,如事务管理、数据库连接管理等。得益于这些优秀框架的底层实现,让我们可以不再需要繁琐的JDBC编码。
    2. 更加面向对象的实现。
    目前的持久层框架,大多建立在面向对象的思想之上。ORM(Object  Relational Mapping)是他们的基本特性。
    ORM为系统设计提供了更加自然的方式。我们可以通过ORM将系统中的Domain Object(领域对象)自动映射到各个数据库表,从而编码中只需要关注Object的相关属性。
    3. 更好的性能。
    持久层框架大多提供了优秀的性能优化机制,如内置的数据库连接池支持,PreparedStatement缓存、数据缓存等。这些机制的综合使用大大提高了系统性能。
    4. 更好的移植性。
    成熟的持久层框架由于其设计上的良好隔离,从而提供了对不同数据库的良好支持。我们只需要简单地修改其配置参数,即可实现底层数据库的切换。
【不足】
    Hibernate作为成熟的持久层框架之一,无疑有着上述的优势。但它并不是完美的。它也存在着不足。
    1. 对大批量数据更新存在问题。
     Hibernate引入了一级缓存和二级缓存,提供了性能的同时带来了缓存一致性的问题。批量更新或者其他系统对数据库的更新容易造成缓存不一致。
    2. 复杂的实体状态。
    三 种实体状态的设计是种种复杂性问题的根源。在持久化状态下不需要save就自动同步到数据库既无必要又容易造成烦恼。
    3. 使用数据库特性的语句,很难调试。
     HQL是一个类SQL对象查询语言,但正是因为HQL与SQL的相似性,往往容易造成混淆,同时HQL难以调试。 
【原理】
	
     Hibernate作为一个持久层的框架,面向对象的设计,很好的实现了与数据库的映射。而它是如何与数据库打交道的,下篇博客结合具体代码做具体介绍。
【总结】
    本篇博客让我们对持久层框架有了进一步了解,而Hibernate作为流行框架之一,有很大的优势,但也有不足之处。特别是系统大多是统计查询功能的情况下,Hibernate并不适用。所以Hibernate的使用也是需要分情况考虑的。
    下篇博客将会继续学习分享,搭建环境,开始Hibernate的第一个实例的开发。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值