全面介绍Hibernate持久化类

本文向大家介绍Hibernate持久化类,可能好多人还不了解Hibernate持久化类,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

10年的镇雄网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整镇雄建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“镇雄网站设计”,“镇雄网站推广”以来,每个客户项目都认真落实执行。

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语句的内容。

比如在映射文件中1)元素 insert属性:设置为false,在insert语句中不包含这个字段,表示永远不会被插入,默认true
2)元素 update属性:设置为false,在update语句中不包含这个字段,表示永远不会被修改,默认true
3)元素 mutable属性:设置为false就是把所有的元素的update属性设置为了false,说明这个对象不会被更新,默认true
4)元素 dynamic-insert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中.默认false
5)元素 dynamic-update属性,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false
6)元素 dynamic-insert属性:设置为true,表示把所有的元素的dynamic-insert属性设置为true,默认false
7)元素 dynamic-update属性:设置为true,表示把所有的元素的dynamic-update属性设置为true,默认false

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

网站名称:全面介绍Hibernate持久化类
当前URL:http://www.hantingmc.com/qtweb/news44/145544.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联