`
kidiaoer
  • 浏览: 818610 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

全面介绍Hibernate持久化类

阅读更多
Hibernate持久化类使用的是JavaBean的风格,为要被访问的属性提供了一套get和set方法,这两个方法也叫做Hibernate 持久化类的访问方法.记得曾经在接触JavaBean 的时候我很迷糊,总觉得提供这两个方法,倒不如把Bean的属性设置public,然后直接调用对象.属性,这样来的方便.但是后来,有一个这样的需求,就是一个人名字可以被查看,但是不可以修改.这个时候如果用set方法的话,只需要把set方法的修饰符换为private就OK了.如果是用对象.属性的形式调用就麻烦了。

而且最重要的一个有点是JavaBean的风格可以简化Hibernate通过JAVA反射机制来获得Hibernate持久化类的访问方法的过程,至于JAVA的反射机制我也是了解一些皮毛.据说很深奥.有兴趣的朋友可以Google一下.有一点值得注意,就是JAVA应用程序不能访问 JavaBean持久化类的private类型的get,set方法.而Hibernate没有这个限制,可以访问所有的级别.包括private default,protected,public.

Java有8种基本类型:byte,short,char,int,long,float,double,boolean,还有8种与之对应的包装类型,Byte,Short,Character,Integer,Long,Float,Double,Boolean包装类型就是把基本类型包装成对象的意思.基本类型于包装类型之间可以方便的转换,例如:

   1. int i = 0; 
   2. Integer ie = new Integer(i); 
   3. //基本类型转换成包装类型 
   4. i = ie.intValue(); 
   5. //包装类型转化成基本类型

注意,直接转换也是可以的.例如i = ie; JAVA会自动把包装类型转换成基本类型.或者ie = i; JAVA会自动把基本类型转换成包装类型.在Hibernate持久化类中,既可以把属性定义为基本类型,也可以定义为包装类型,他们对应的 Hibernate映射类型int和Integer都对应int类型,这个表示不是很明显,在用JAVA对象类型字符串举例String,数据库是 varhcar(50),在hibernate的*.hbm.xml 映射文件里一律写为string。

其实使用基本类型或者包装类型来定义Hibernate持久化类中的属性是各有优缺点的.基本类型就是使用方便,简单,在需要数字运算的时候直接可以运算.而包装类型就要麻烦的先转换成基本类型,然后在进行运算,但是包装类型的优点在于能表达null值,每一个包装类型的对象创建的时候默认值都是 null类型的.而基本类型是不可以表达null的,它们的默认值是0.为什么要表达null值呢.因为SQL中.所有类型的数据,默认值都是 null的。

当进入insert的时候,没有赋值的属性,默认值就是null,所以说JAVA的包装类型和数据库之间的对应关系更直接.这里建议Hibernate的OID设置为包装类型,其他的属性就根据业务需要和个人习惯来定吧.

Hibernate在初始化阶段会根据映射文件的信息,为所有的Hibernate持久化类预定义insert语句,update语句where ID,delete语句where ID,select语句where ID,这里所说的语句就是标准的SQL增,删,改,查.语句,参数用?代表JDBC PreparedStatement中的参数,这里就不举例了.这些SQL语句都存放在SessionFactory的缓存中,当执行Session的 save(),update(),delete(),load()方法时,将会从SessionFactory的缓存中读取这些预定义的SQL语句,在把具体的参数值绑定到SQL语句中,这就是Hibernate的基本原理.在默认的情况下这些语句表达的是所有的字段.当然Hibernate还允许我们在映射文件里控制insert和update语句的内容。

比如在映射文件中<property 元素中的update属性设置成为false,那么这个字段,将不被包括在基本的update语句中,修改的时候,将不包括这个字段了.insert同理.dynamic动态SQL语句的配置也是很常用的.下面介绍配置SQL语句的具体属性:
1)<property>元素 insert属性:设置为false,在insert语句中不包含这个字段,表示永远不会被插入,默认true
2)<property>元素 update属性:设置为false,在update语句中不包含这个字段,表示永远不会被修改,默认true
3)<class>元素 mutable属性:设置为false就是把所有的<property>元素的update属性设置为了false,说明这个对象不会被更新,默认true
4)<property>元素 dynamic-insert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中.默认false
5)<property>元素 dynamic-update属性,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false
6)<class>元素 dynamic-insert属性:设置为true,表示把所有的<property>元素的dynamic-insert属性设置为true,默认false
7)<class>元素 dynamic-update属性:设置为true,表示把所有的<property>元素的dynamic-update属性设置为true,默认false

Hibernate生成动态SQL语句的消耗的系统资源(比如CPU,内存等)是很小的,所以不会影响到系统的性能,如果表中包含N多字段,建议把 dynamic- update属性和insert属性设置为true,这样在插入和修改数据的时候,语句中只包括要插入或者修改的字段.可以节省SQL语句的执行时间,提高程序的运行效率.
分享到:
评论

相关推荐

    精通Hibernate:Java对象持久化技术详解.pdf

    《精通Hibernate:Java对象持久化技术详解》这本书深入剖析了Hibernate这一流行的Java对象关系映射(ORM)框架,旨在帮助开发者全面理解并熟练掌握Hibernate的使用。Hibernate是Java开发中的重要工具,它简化了...

    Java 精通Hibernate对象持久化技术权威指南

    总的来说,这本书和配套文档为Java开发者提供了全面的Hibernate学习资源,无论你是初学者还是有经验的开发者,都能从中受益匪浅,提升你在J2EE开发中的对象持久化能力。通过深入理解和实践,你可以更加自如地应对...

    HIBERNATE - 符合Java习惯的关系数据库持久化.doc

    在文档中,首先介绍了如何在Tomcat服务器中快速启动和配置Hibernate,包括创建第一个可持久化类、映射实体以及执行基本操作。开发者可以通过这些步骤快速入门,体验Hibernate带来的便利。 接下来,文档深入讨论了...

    精通HibernateJava对象持久化技术

    《精通Hibernate:Java对象持久化技术详解》这本书深入探讨了Java世界中的对象持久化技术,主要聚焦于Hibernate框架。Hibernate是一种流行的开源ORM(对象关系映射)解决方案,它为Java开发者提供了一种方便的方式来...

    HIBERNATE符合Java习惯的关系数据库持久化

    通过学习以上知识点,你可以全面掌握Hibernate的使用,实现Java习惯下的关系数据库持久化,提高开发效率并减少与数据库交互的复杂性。在实际项目中,结合最佳实践,Hibernate能帮助你构建稳定、高效的数据访问层。

    精通Hibernate:Java對象持久化技術詳解

    总的来说,《精通Hibernate:Java對象持久化技術詳解》是一本全面且深入的Hibernate指南,适合所有希望提升Java ORM能力的开发者。通过阅读这本书,读者不仅可以掌握Hibernate的核心概念和技术,还能了解到最佳实践...

    持久层和持久化

    本文将探讨iBATIS、Hibernate以及Java Persistence API (JPA)这三种流行的持久化框架,并进行对比分析。 首先,持久层(Persistence Layer)是指能够长久存储数据的层次,它保证了即使应用程序关闭,数据依然可以被...

    精通hibernate3.0(第三版).rar

    1. Hibernate基本概念:介绍Hibernate的核心思想,如实体、持久化类、对象状态管理、事务处理等,帮助初学者建立对ORM框架的基本认识。 2. Hibernate配置:讲解如何配置Hibernate的XML文件,包括hibernate.cfg.xml...

    Hibernate Hibernate5 讲义 PDF

    北京动力节点教育培训公司提供的Hibernate5讲义,不仅对Hibernate框架进行了全面的介绍,而且通过实例演示了如何使用Hibernate进行基本的数据库操作。该讲义涵盖了Hibernate的基本技术、配置方法以及如何开发一个...

    符合Java习惯的关系数据库持久化Hibernate3.2.0_Reference_zh_CN

    《符合Java习惯的关系数据库持久化Hibernate3.2.0_Reference_zh_CN》是针对Java开发者的一份详尽的中文API文档,它详细介绍了如何利用Hibernate 3.2.0框架进行关系数据库的持久化操作。Hibernate作为一个开源的对象...

    精通 Hibernate:Java 对象持久化技术详解(第2版

    《精通 Hibernate:Java 对象持久化技术详解(第2版)》是一本深入解析Java对象持久化技术的权威著作,特别适合JavaWeb开发者学习。Hibernate作为Java领域中最流行的ORM(对象关系映射)框架,它简化了数据库操作,...

    hibernate(api_介绍)

    Hibernate 是一个强大的 Java 持久化框架,它简化了数据库与对象之间的交互。通过提供一组丰富的API,Hibernate使得开发者能够在应用中轻松地管理和操作数据库数据。以下是对这些API的详细解析: 1. **访问数据库...

    Hibernate久化框架开发文档.doc

    《Hibernate持久化框架开发文档》是一份详尽的教程,旨在引导开发者深入理解并熟练运用Hibernate框架。Hibernate是一个流行的Java对象关系映射(ORM)工具,它为Java开发者提供了便捷的方式来管理和操作数据库。以下...

    Spring+Hibernate实现)Hibernate公用类

    在IT行业中,Spring和Hibernate是两个非常重要的框架,它们分别在应用层管理和数据持久化方面发挥着关键作用。本文将详细解析如何利用Spring和Hibernate来实现一个通用的DAO(Data Access Object)层,以提高代码...

    [JAVA]_[清晰版]Hibernate 3.1-符合JAVA习惯的关系数据库持久化

    本资源提供了对Hibernate 3.1全面且深入的讲解,旨在帮助开发者掌握如何利用Hibernate来实现关系数据库的持久化。 Hibernate作为一个ORM框架,它的核心目标是简化Java应用程序与数据库之间的交互。通过提供一个对象...

    Hibernate面试题专栏 - 最全的Hibernate面试题, Hibernate笔试题, Hibernate问题

    Hibernate是一个用于简化Java数据库编程的开源框架,它提供了一种在Java应用程序中持久化对象的方式,避免了直接编写SQL语句,提高了开发效率。 **1. Hibernate基本概念** - **对象关系映射(ORM)**: ORM是将...

Global site tag (gtag.js) - Google Analytics