偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

全面介紹Hibernate持久化類

開發(fā) 后端
這里介紹Hibernate持久化類使用的是JavaBean的風(fēng)格,為要被訪問的屬性提供了一套get和set方法,這兩個(gè)方法也叫做Hibernate持久化類的訪問方法。

本文向大家介紹Hibernate持久化類,可能好多人還不了解Hibernate持久化類,沒有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。

Hibernate持久化類使用的是JavaBean的風(fēng)格,為要被訪問的屬性提供了一套get和set方法,這兩個(gè)方法也叫做Hibernate持久化類的訪問方法.記得曾經(jīng)在接觸JavaBean 的時(shí)候我很迷糊,總覺得提供這兩個(gè)方法,倒不如把Bean的屬性設(shè)置public,然后直接調(diào)用對(duì)象.屬性,這樣來的方便.但是后來,有一個(gè)這樣的需求, 就是一個(gè)人名字可以被查看,但是不可以修改.這個(gè)時(shí)候如果用set方法的話,只需要把set方法的修飾符換為private就OK了.如果是用對(duì)象.屬性的形式調(diào)用就麻煩了。

而且最重要的一個(gè)有點(diǎn)是JavaBean的風(fēng)格可以簡化Hibernate通過JAVA反射機(jī)制來獲得Hibernate持久化類的訪問方法的過程,至于JAVA的反射機(jī)制我也是了解一些皮毛.據(jù)說很深?yuàn)W.有興趣的朋友可以Google一下.有一點(diǎn)值得注意,就是JAVA應(yīng)用程序不能訪問JavaBean持久化類的private類型的get,set方法.而Hibernate沒有這個(gè)限制,可以訪問所有的級(jí)別.包括private default,protected,public.

Java有8種基本類型:byte,short,char,int,long,float,double,boolean,還有8種與之對(duì)應(yīng)的包裝類型,Byte,Short,Character,Integer,Long,F(xiàn)loat,Double,Boolean包裝類型就是把基本類型包裝成對(duì)象的意思.基本類型于包裝類型之間可以方便的轉(zhuǎn)換,例如:

  1. int i = 0;  
  2. Integer ie = new Integer(i);  
  3. //基本類型轉(zhuǎn)換成包裝類型  
  4. i = ie.intValue();  
  5. //包裝類型轉(zhuǎn)化成基本類型 

注意,直接轉(zhuǎn)換也是可以的.例如i = ie; JAVA會(huì)自動(dòng)把包裝類型轉(zhuǎn)換成基本類型.或者ie = i; JAVA會(huì)自動(dòng)把基本類型轉(zhuǎn)換成包裝類型.在Hibernate持久化類中,既可以把屬性定義為基本類型,也可以定義為包裝類型,他們對(duì)應(yīng)的Hibernate映射類型int和Integer都對(duì)應(yīng)int類型,這個(gè)表示不是很明顯,在用JAVA對(duì)象類型字符串舉例String,數(shù)據(jù)庫是varhcar(50),在hibernate的*.hbm.xml 映射文件里一律寫為string。

其實(shí)使用基本類型或者包裝類型來定義Hibernate持久化類中的屬性是各有優(yōu)缺點(diǎn)的.基本類型就是使用方便,簡單,在需要數(shù)字運(yùn)算的時(shí)候直接可以運(yùn)算.而包裝類型就要麻煩的先轉(zhuǎn)換成基本類型,然后在進(jìn)行運(yùn)算,但是包裝類型的優(yōu)點(diǎn)在于能表達(dá)null值,每一個(gè)包裝類型的對(duì)象創(chuàng)建的時(shí)候默認(rèn)值都是null類型的.而基本類型是不可以表達(dá)null的,它們的默認(rèn)值是0.為什么要表達(dá)null值呢.因?yàn)镾QL中.所有類型的數(shù)據(jù),默認(rèn)值都是 null的。

當(dāng)進(jìn)入insert的時(shí)候,沒有復(fù)值的屬性,默認(rèn)值就是null,所以說JAVA的包裝類型和數(shù)據(jù)庫之間的對(duì)應(yīng)關(guān)系更直接.這里建議Hibernate的OID設(shè)置為包裝類型,其他的屬性就根據(jù)業(yè)務(wù)需要和個(gè)人習(xí)慣來定吧.

Hibernate在初始化階段會(huì)根據(jù)映射文件的信息,為所有的Hibernate持久化類預(yù)定義insert語句,update語句where ID,delete語句where ID,select語句where ID,這里所說的語句就是標(biāo)準(zhǔn)的SQL增,刪,改,查.語句,參數(shù)用?代表JDBC PreparedStatement中的參數(shù),這里就不舉例了.這些SQL語句都存放在SessionFactory的緩存中,當(dāng)執(zhí)行Session的 save(),update(),delete(),load()方法時(shí),將會(huì)從SessionFactory的緩存中讀取這些預(yù)定義的SQL語句,在把具體的參數(shù)值綁定到SQL語句中,這就是Hibernate的基本原理.在默認(rèn)的情況下這些語句表達(dá)的是所有的字段.當(dāng)然Hibernate還允許我們?cè)谟成湮募锟刂苅nsert和update語句的內(nèi)容。

比如在映射文件中<property 元素中的update屬性設(shè)置成為false,那么這個(gè)字段,將不被包括在基本的update語句中,修改的時(shí)候,將不包括這個(gè)字段了.insert同理.dynamic動(dòng)態(tài)SQL語句的配置也是很常用的.下面介紹配置SQL語句的具體屬性:
1)<property>元素 insert屬性:設(shè)置為false,在insert語句中不包含這個(gè)字段,表示永遠(yuǎn)不會(huì)被插入,默認(rèn)true
2)<property>元素 update屬性:設(shè)置為false,在update語句中不包含這個(gè)字段,表示永遠(yuǎn)不會(huì)被修改,默認(rèn)true
3)<class>元素 mutable屬性:設(shè)置為false就是把所有的<property>元素的update屬性設(shè)置為了false,說明這個(gè)對(duì)象不會(huì)被更新,默認(rèn)true
4)<property>元素 dynamic-insert屬性:設(shè)置為true,表示insert對(duì)象的時(shí)候,生成動(dòng)態(tài)的insert語句,如果這個(gè)字段的值是null就不會(huì)加入到insert語句當(dāng)中.默認(rèn)false
5)<property>元素 dynamic-update屬性,設(shè)置為true,表示update對(duì)象的時(shí)候,生成動(dòng)態(tài)的update語句,如果這個(gè)字段的值是null就不會(huì)被加入到update語句中,默認(rèn)false
6)<class>元素 dynamic-insert屬性:設(shè)置為true,表示把所有的<property>元素的dynamic-insert屬性設(shè)置為true,默認(rèn)false
7)<class>元素 dynamic-update屬性:設(shè)置為true,表示把所有的<property>元素的dynamic-update屬性設(shè)置為true,默認(rèn)false

Hibernate生成動(dòng)態(tài)SQL語句的消耗的系統(tǒng)資源(比如CPU,內(nèi)存等)是很小的,所以不會(huì)影響到系統(tǒng)的性能,如果表中包含N多字段,建議把dynamic- update屬性和insert屬性設(shè)置為true,這樣在插入和修改數(shù)據(jù)的時(shí)候,語句中只包括要插入或者修改的字段.可以節(jié)省SQL語句的執(zhí)行時(shí)間,提高程序的運(yùn)行效率.

【編輯推薦】

  1. 簡單描述Hibernate單元測(cè)試
  2. 概括Hibernate多表關(guān)聯(lián)查詢
  3. 淺談Hibernate Session Factory
  4. 淺析Hibernate加載配置文件
  5. 深入剖析Hibernate核心接口
責(zé)任編輯:佚名 來源: 51CTO.com
相關(guān)推薦

2009-09-29 16:46:01

創(chuàng)建Hibernate

2009-09-21 17:46:34

Hibernate持久

2009-09-28 13:49:44

Hibernate Q

2009-09-23 17:41:05

Hibernate事務(wù)

2009-09-25 09:46:03

Hibernate s

2009-09-28 10:24:58

Hibernate基礎(chǔ)

2009-09-27 09:55:38

Hibernate持久

2009-09-24 15:42:44

Hibernate對(duì)象

2009-09-24 16:39:20

Hibernate傳播

2009-09-28 15:50:53

Hibernate創(chuàng)建持久化Product

2009-09-29 16:11:45

Hibernate實(shí)現(xiàn)

2024-03-26 00:03:08

Redis數(shù)據(jù)RDB

2009-09-25 09:30:33

Hibernate持久

2009-06-17 16:00:03

Hibernate自定

2009-09-23 17:00:07

Hibernate持久

2009-09-21 16:56:14

Hibernateibatis

2009-09-28 17:27:27

Hibernate A

2009-09-25 16:27:33

Hibernate S

2009-09-28 16:54:34

Hibernate示例

2009-09-23 15:50:21

Hibernate u
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)