快速业务通道

在Hibernate中直接操作JDBC接口 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

在Hibernate中直接操作JDBC接口

时间:2011-08-11 IBM 唐清原

简介: Hibernate 在处理多表关联及分组排序等复杂数据库查询操作时,其固有的 O-R 映射机制会 产生大量冗余 SQL 操作,系统性能比传统的 JDBC 低很多。本文分析了 Hibernate 产生此类问题的原因 ,提出了一个在 Hibernate 框架内直接操作 JDBC 的接口的解决方案,在实际项目中验证了该解决方案 可以有效提高此类查询的效率。文中提供的示例代码可以直接运用于使用 Hibernate 框架的 J2EE 系统 项目。

在 Hibernate 框架中提供直接操作 JDBC 接口的原因

Hibernate 框架在处理复杂查询方面的 问题

Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封 装,使得 Java 程序员可以随心所欲的使用面向对象编程思维来操纵数据库。Hibernate 的优势在于屏蔽 了数据库细节,对于新增修改删除的数据层操作,不再需要跟具体的 SQL 语句打交道,简单的对对象实 例进行增删改操作即可。

但是,对于多表关联、分组统计、排序等复杂的查询功能时,由于 Hibernate 自身的 O-R 映射机制 ,父子表之间关联取数据会产生大量冗余的查询操作,性能低下。此类情况下,直接使用 JDBC 的 SQL 语句反而更加灵活和高效。

Hibernate 框架处理复杂查询问题实例分析

考虑如下数据库实 体示例,表 A 为主表,表 B 和表 C 为子表,A 与 B、A 与 C 表均为 1 对多关系,在 B 表和 C 表中 以 A_ID 外键字段关联 A 表父记录。

图 1. 数据库实体示例图

在Hibernate中直接操作JDBC接口(2)

时间:2011-08-11 IBM 唐清原

在 Hibernate 框架中,通常采用以下配置方式完成 A 表与 B,C 表父子实体之间的级联查询操作, Hibernate 实体配置 xml 如下:

清单 1. hibernate 实体配置 xml

A.hbm.xml: <hibernate-mapping>   <class name="XXX.XXX.A" table="A" >      <id name="id" type="long">       <column name="ID"/>        <generator class="assigned">       </generator>      </id>     <set name="children_B" cascade="delete" inverse="true"  lazy="false">       <key column="A_ID"></key>        <one-to-many class="XXX.XXX.B"/>     </set>     <set  name="children_C" cascade="delete" inverse="true" lazy="false">        <key column="A_ID"></key>       <one-to-many  class="XXX.XXX.C"/>     </set>   </class> </hibernate-mapping> B.hbm.xml: <hibernate-mapping>    <class name="XXX.XXX.B" table="B" >     <id name="id"  type="long">       <column name="ID"/>       <generator  class="assigned">       </generator>     </id>      <property name="a_id" type="long">       <column  name="A_ID">       </column>     </property>    </class> </hibernate-mapping> C.hbm.xml <hibernate- mapping>   <class name="XXX

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号