`
chen_gengjia
  • 浏览: 109429 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

深入 Hibernate之一:没有Hibernate的时代

阅读更多

                     深入 Hibernate之一:没有Hibernate的时代

 

JDBC java操作数据库的技术,它的方法上,提出一个由接口组成的框架,具体的实现由相应数据库厂商完成,而对于用户程序而言,只需要在统一的接口上编程。数据库厂商实现的类体系一般称为驱动(Driver). 下面是 JDBC技术示意图:



 

JDBC提供给用户程序的API主要包括:DriverManagerDriverConnectionStatement(PrepareStatementCallableStatement)ResultSet. 各接口的使用如下图所示:


下面重点讨论连接的建立,因为数据库程序影响性能的很大一部分是数据库连接管理。

最初JDBCDriverManager负责创建和管理 Driver实例并获取连接。当用户程序调用DriverManagergetConnection方法传入URL参数时,DriverManager 查看所有的驱动,用第一个找到的支持此URL的驱动去建立连接,并返回,这里建立的连接是驱动建立的物理上的连接。

JDBC2.0 开始,提出了一个 DataSource 类,支持 JDBC2.0 的驱动都必须实现这个类,用户程序可以通过 DataSource 实例建立连接,那么,为什么要增加这个类呢?它与 DriverManager 有什么关系?

第一,   OOP的思想需要有这么一个‘数据源’的概念,java也好,.net 也好都有这么一个概念。

第二,   DataSource支持连接池和事务处理机制,它的底层同样使用了 DriverManager 建立物理连接,不同的是,它实现了一个连接池,程序开始加载时DataSource就维护了一定数量的活跃连接,这样对于用户程序而言,申请一个连接其实是直接从活跃连接拿出一个,释放一个连接其实是放回池里,可以有效提高速度。连接池可以由不同层面实现,DataSource是在驱动层面去实现。(Apache是在WEB服务器层面,Hibernarte自带的连接池是在应用程序层面)

  使用数据源建立连接推荐的方式是JNDI资源引用的方式,即将数据源的配置信息登记在配置文件中,用JNDI做一个命名,用户程序通过JNDI找到数据源,得到连接,而数据源的实例创建不要去管,这样的好处是避免硬编码,以后改数据源配置的时候,只要修改配置文件,不用改程序代码。这种方式如图所示:



 

 

     现在访问数据库一般使用中间件 hibernate,这种情况下,使用的接口又变成了 Hibernate 的接口:Configuration Session-Factory Session Query 等,不需要再用JDBCDriverManager/DataSource Connection Statement ResultSet 等接口了,Hibernate 相当于在用户程序和数据库驱动之间加入了一层(上边DataSource取连接的方式也是加入了一层,不过那一层仅仅是维护连接池的单一功能,而hibernate还有缓存、持久层对象生命周期的维护、对象与库表的映射、HQL语句的处理等等功能),软件设计的一贯做法是通过加多一些层让整体性能更优,比如,加多一层连接池的管理,就可以省去大量建立和销毁物理连接的耗费,hibernate是怎么提高性能的?它底层必然也是调用了JDBC,它这一层通过一些怎样的操作,可以让同样的用户程序调用以更高的性能去实现呢?

  • 大小: 16.1 KB
  • 大小: 50.9 KB
  • 大小: 45.1 KB
分享到:
评论

相关推荐

    hibernate实例

    在没有ORM框架的时代,程序员需要编写大量的JDBC代码来实现数据的存取,而使用Hibernate则可以大大简化这一过程。 3. Hibernate提高了代码的可移植性。由于Hibernate屏蔽了具体数据库操作的细节,因此同样的代码...

    hibernate租房系统

    本文将深入探讨使用Hibernate框架构建的“hibernate租房系统”,旨在提供一个快速、精准的房源信息查询与管理系统。Hibernate,作为Java领域内广泛应用的对象关系映射(ORM)框架,能够简化数据库操作,提高开发效率...

    hibernate-search-5.6.0.Alpha3-dist.zip

    《Hibernate Search 5.6.0.Alpha3:深入探索企业级数据检索的利器》 Hibernate Search,作为Java领域中的一款强大、高效的全文搜索引擎,与ORM框架Hibernate紧密结合,为开发者提供了在数据库中进行复杂检索的能力...

    hibernate复合主键配置和使用

    本文将深入探讨Hibernate对复合主键的支持,帮助开发者更好地理解和应用这一特性。 一、什么是复合主键? 复合主键(Composite Key)是指由两个或更多个列共同组成的主键,这些列的组合具有唯一性,确保了数据的...

    用struts和hibernate编写的学校购书系统

    本文将深入探讨一个采用Struts和Hibernate框架,结合MySQL数据库实现的学校购书系统,该系统旨在实现对教材的订购、查询、更新、删除等基本功能,即CRUD(Create、Read、Update、Delete)操作。 首先,让我们了解...

    springMvc+hibernate+maven网上花店系统,前端使用vue.js页面编写

    对于初学者来说,这是一个很好的学习案例,可以深入了解SpringMvc、Hibernate、Maven和Vue.js的实际应用。同时,对于有经验的开发者,也可以从中获取灵感,改进自己的项目架构或技术选型。通过这个项目,我们可以...

    hibernatesynchronizer_3.1.9 for JDK1.4

    【hibernatesynchronizer_3.1.9 for JDK1.4】是一个针对JDK1.4版本的Hibernate同步工具,主要用于在多线程环境下确保数据的一致性和完整性。Hibernate是一个非常流行的Java对象关系映射(ORM)框架,它允许开发者...

    会员管理系统jar源码下载(struts+hibernate+spring).zip

    这是一个基于Java技术栈的会员管理系统源码,使用了经典的SSH框架——Struts、Hibernate和Spring。这个系统的主要目的是实现对会员信息的有效管理和操作,通过这三个框架的集成,实现了业务层、持久层和表现层的解耦...

    jsp源码图书管理系统(struts+hibernate+spring)

    3. **Hibernate**:Hibernate 是一个对象关系映射 (ORM) 工具,它可以将 Java 对象映射到数据库表中。通过 Hibernate,开发者可以使用面向对象的方式操作数据库,无需编写复杂的 SQL 语句。这对于提高开发效率和降低...

    基于hibernate spring struts shiro activiti easyui框架的物流系统,可做毕业设计

    本项目采用了一系列主流的Java企业级开发框架,包括Hibernate、Spring、Struts、Shiro和Activiti,以及前端展示库EasyUI,构建了一个完整的物流管理系统。本文将详细解析这些技术在物流系统中的应用及其核心知识点。...

    Hibernate Annotation Reference

    实体Bean是Hibernate ORM的核心概念之一,用于表示数据库中的表与Java对象之间的关系。 #### 2.2 使用EJB3注解映射 ##### 2.2.1 定义实体Bean 通过`@Entity`注解将Java类标记为持久化类,可以进一步使用其他注解来...

    会员管理系统(struts+hibernate+spring).zip

    在当今的互联网时代,会员管理系统已经成为各类网站和服务平台不可或缺的一部分。这个“会员管理系统(struts+hibernate+spring).zip”文件包含了一个采用主流Java技术栈——Struts、Hibernate和Spring构建的会员管理...

    Compass全文检索系列之一:Compass入门

    Compass全文检索系列之一:Compass入门 在IT领域,全文检索已经成为数据分析和信息检索的重要技术,尤其是在大数据时代。本文将介绍Compass,一个基于Lucene的全文搜索引擎库,为Java开发者提供了一种简单易用的...

    基于J2EE的Struts、Spring、Hibernate框架技术构建Web应用.pdf

    ### 基于J2EE的Struts、Spring、Hibernate框架技术构建Web应用 #### 概述 在当今数字化时代,Web应用的开发已经成为企业...这些框架的集成使用,是现代Web应用开发的最佳实践之一,值得广大开发者深入学习和应用。

    使用struts框架和hibernate技术开发的学生信息管理系统

    本文将深入探讨一个使用Struts框架和Hibernate技术开发的学生信息管理系统,该系统旨在提升教育机构的教学效率,实现远程教学、作业管理以及培训机构加盟等功能。 首先,我们来了解Struts框架。Struts是Apache软件...

    酒家点餐系统,基于 spring mvc,spring,hibernate,maven 框架开发

    酒家点餐系统,作为一个高效实用的工具,它利用现代软件工程的技术手段,尤其是Java领域的四大核心框架——Spring MVC、Spring、Hibernate以及Maven,实现了点餐、订单处理、库存管理等功能,极大地提高了餐饮企业的...

    JSP基于SpringMVC和Hibernate生离校就业分析管理平台源码案例设计.zip

    在信息化时代,教育管理系统的建设对于高校来说至关重要,而基于JSP、SpringMVC和Hibernate构建的生离校就业分析管理平台正是这样一个高效、实用的解决方案。本篇文章将深入探讨该平台的源码设计,帮助读者理解其...

    青鸟租房网,使用了Hibernate+Struts框架

    本文将深入探讨该系统背后的技术实现——Hibernate和Struts2框架的集成应用。 Hibernate,作为Java领域中的一个持久化框架,它简化了数据库操作,使得开发者无需关注SQL语法,而是通过对象关系映射(ORM)来处理...

    网上书店(struts+hibernate+css+mysql).rar

    这个"网上书店(struts+hibernate+css+mysql)"项目,是基于Java Web技术栈构建的一个典型实例,旨在为学习者提供一个深入理解JSP、Servlet、Struts、Hibernate和MySQL等技术的实践平台。通过此项目,你可以了解到如何...

Global site tag (gtag.js) - Google Analytics