欢迎来到天天文库
浏览记录
ID:38780114
大小:45.99 KB
页数:14页
时间:2019-06-19
《在 Hibernate 中直接操作 JDBC 接口》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、在Hibernate中直接操作JDBC接口唐清原,IT咨询顾问,IBM唐清原,现供职于IBMGTS全球服务中心(深圳),向客户提供业务支撑系统的集成、架构、运维等。简介: Hibernate在处理多表关联及分组排序等复杂数据库查询操作时,其固有的O-R映射机制会产生大量冗余SQL操作,系统性能比传统的JDBC低很多。本文分析了Hibernate产生此类问题的原因,提出了一个在Hibernate框架内直接操作JDBC的接口的解决方案,在实际项目中验证了该解决方案可以有效提高此类查询的效率。文中提供的示例代码可以直接运用于使用Hibernate框架的J2EE系统项目。发布日
2、期: 2010年4月16日在Hibernate框架中提供直接操作JDBC接口的原因Hibernate框架在处理复杂查询方面的问题Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用面向对象编程思维来操纵数据库。Hibernate的优势在于屏蔽了数据库细节,对于新增修改删除的数据层操作,不再需要跟具体的SQL语句打交道,简单的对对象实例进行增删改操作即可。但是,对于多表关联、分组统计、排序等复杂的查询功能时,由于Hibernate自身的O-R映射机制,父子表之间关联取数据会产生大量冗余的查询操作
3、,性能低下。此类情况下,直接使用JDBC的SQL语句反而更加灵活和高效。Hibernate框架处理复杂查询问题实例分析考虑如下数据库实体示例,表A为主表,表B和表C为子表,A与B、A与C表均为1对多关系,在B表和C表中以A_ID外键字段关联A表父记录。图1.数据库实体示例图在Hibernate框架中,通常采用以下配置方式完成A表与B,C表父子实体之间的级联查询操作,Hibernate实体配置xml如下:清单1.hibernate实体配置xmlA.hbm.xml:4、ame="id"type="long">5、>B.hbm.xml:6、y>C.hbm.xml对应的Hibernate领
4、ame="id"type="long">5、>
5、>
6、y>
7、域实体类代码示例如下:清单2.hibernate实体类示例A.java:publicclassAimplementsjava.io.Serializable,Comparable{privatelongid;privateSetchildren_b=newHashSet();privateSetchildren_c=newHashSet();publicA(longid){this.id=id;}publiclonggetId(){returnid;}publicvoidsetId(longid){this.id=id;}pu
此文档下载收益归作者所有