成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hibernate實戰(第2版)讀書筆記

開發 后端
本文是作者認真學習Hibernate作下的筆記,參考的書籍是Hibernate實戰(第2版)。

最近時間重讀hibernate實戰(第2版),哈哈,很長時間不用幾乎都忘完了。現在作為讀書筆記記錄下來,以供自己和別人參考。部分例子摘自hibernate實戰(第2版)書中。本人能力有限,難免出現錯誤的地方,歡迎指正。

在hibernate使用seqence的主鍵生成策略時候,要這樣寫(下面的寫法是針對HSQLDB,不清楚在其他數據庫也通用)

Xml代碼:

  1. <id column="MY_ID">    
  2.  <generator class="sequence">    
  3.   <param name="sequence">MY_SEQUENCEparam>    
  4.   <param name="parameters">    
  5.     START WITH 1 INCREMENT BY 1     
  6.   param>    
  7.  generator>    
  8. <id>    
  9. <id column="MY_ID"> 
  10.  <generator class="sequence"> 
  11.   <param name="sequence">MY_SEQUENCEparam> 
  12.   <param name="parameters"> 
  13.     START WITH 1 INCREMENT BY 1  
  14.   param> 
  15.  generator> 
  16. <id>  

hibernate實戰(第2版)書中是這樣寫的 INCREMENT 1 START WITH 1,這樣寫插入的call next value for MY_SEQUENCE 返回的是0,START WITH 1 INCREMENT BY 1 執行call next value for MY_SEQUENCE返回的是1,這樣奇怪的問題,難道是hsqldb有bug?我也沒有去做過多的深究。

Xml代碼:

  1. <class dynamic-insert="true" dynamic-update="true">   

dynamic-insert 屬性告訴hibernate是否在insert語句中包含空的屬性值(設置為true,是表明在insert語句中不包含為null的屬性,也就是insert語句中包含的屬性必須是非空的字段)。

這兩個屬性在某些地方會有用,比如說在更新中設置dynamic-update=true,如果你僅僅更新了一個屬性,沒有必要把其他屬性的更新也放在sql中,也提高了數據庫的執行效率。但是也帶來一個副作用,可能就是hibernate要進行比較每個屬性的值,來決定是否在sql語句中包含這個字段。當然這對 字段比較多的類是比較有用的。dynamic-insert在做insert操作時候,也是如此。

Xml代碼:

  1. <hibernate-mapping default-access="field">    
  2. <class mutable="false">   

標記這個類為不可變類。這樣hibernate就可以避免做臟檢查。為了保持這個不可變屬性,***不寫set方法,僅僅保留get方法。設置值通過構造來設置。還要明確指示hibernate訪問這個類的字段要通過field來訪問,而不是通過get-set方法,這個由 hibernate-mapping的 default-access="field"來設置。

Xml代碼:

  1. <hibernate-mapping auto-import="false">    
  2.  <import class="mypackage.Class" rename="Hello" />    
  3. hibernate-mapping>   

一般情況下,你寫一個類的映射后,hibernate 會自動的導入到HQL的命名空間中。你在HQL查詢時候可以僅僅通過類名,而不是包名.類名來使用指定的類了。但是,存在這樣一種情況,如果在不同包中有相同的類名,在HQL中就會引起歧義,不過一個很好的辦法就是在hibernate-mapping中關閉自動導入的屬性,采取顯式導入,然后重命名之。這樣,你在HQL中就可以直接寫 from Hello,而避免了歧義。

Xml代碼:

  1. <hibernate-mapping package="mypackage.model">   

定義package這個屬性,可以在這個映射文件中給所有未以包名開頭的類名加上定義的包作為前綴。

Xml代碼:

  1. <property name="description" column="`description`">   

之所以加反引號,是因為你覺得可能description在特定的數據庫中是關鍵字。你加上反引號后,hibernate會為你針對不同的數據庫做特定的轉化。例如sqlserver,hibernate會為你加上[description],mysql加上`description`,另外在在hsqldb中給description加反引號后,產生的是"description",這樣執行起來反而會報錯。

Xml代碼 :

  1. <property name="description" column="desc" access="field">   

指定description字段通過field直接訪問。

Xml代碼:

  1. <property name="total" formula="total + tax_rate * total">   

這個公式在每次查詢時候求值,并且這個屬性不會被保存和更新,如果你改變其中的數據例如tax_rate,屬性值不會去自動計算。

Xml代碼:

  1. <property name="mydata" update="false" insert="false">   

如果update和i nsert都設置false的話,這個字段就不會出現在INSERT和UPDATE語句中。通常不再類中給不可變的屬性添加公有的設置方法。

Xml代碼:

  1. <property generated="always"   

generated的合法值是always和insert。這個屬性通常和dynamic-insert配合起來才更有用。一般用來在屬性中插入默認值。

initial_price number(10, 2) default '1'

Xml代碼:

  1. <property name="initial_price">    
  2.  <column name="initial_price"   
  3. default="1" generated="insert"/>    
  4. property>   

其中的default屬性,只在生成表結構時候有用。hibernate并不會在Java類中,給空的屬性設置默認值。

在插入有default屬性的字段中,要想使default起作用,必須設置dynamic-insert=true,這樣保證有default屬性的字段字段不會出現在insert中(default的字段為null),否則,它的值為null(插入NULL而不是默認值),另外默認值插入到數據庫之后,因為設置了generated=always,hibernate會在插入后自動的執行一個select,給Java類中的屬性設置,如果沒有設置generated屬性,需要顯式調用session.flush()語句。

Xml代碼:

  1. <class name="Hello">    
  2.  <component name="Address">    
  3.   <property name="">    
  4.  <component>    
  5. class>   

如果component中說有的屬性都為null,那么查詢時候,這個組件個引用是null,就是說hello.getAddress()返回的是null,只要有至少一個不為null,那么返回這個組件的引用將不是null。

【編輯推薦】

  1. 初學者適用的Hibernate學習方法
  2. Hibernate優化方法解析
  3. Hibernate一對多關系的處理
  4. Struts與Hibernate的***結合方案
  5. Hibernate的性能優化

 

責任編輯:仲衡 來源: JavaEye技術網站
相關推薦

2009-06-18 14:20:45

hibernate實戰

2016-11-16 09:52:39

Linux讀書筆記內核

2015-03-10 14:05:46

程序員軟件架構讀書筆記

2017-02-07 15:54:14

數據可視化數據分析

2015-07-15 13:45:51

SQLServer讀書筆記

2015-07-15 13:48:01

SQLServer讀書筆記

2021-01-04 18:21:47

AI

2020-12-24 17:40:00

MySQL角色管理數據庫

2021-09-23 14:39:28

鴻蒙HarmonyOS應用

2013-07-22 11:25:12

2014-04-16 11:39:52

2015-06-19 07:50:47

2020-12-24 18:00:45

MySQL元數據鎖數據庫

2009-08-26 17:22:09

C#語言

2009-08-25 16:32:24

C#語言

2009-06-16 15:52:18

Hibernate文檔

2009-09-29 17:22:30

Hibernate S

2009-06-16 15:32:24

Hibernate文檔

2009-06-16 15:42:44

Hibernate文檔

2009-06-18 11:25:26

Hibernate L
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品久久久久久久久久小网站 | 亚洲色图图片 | 91福利网 | 草逼网站 | 欧美日韩国产一区二区三区 | 黑人成人网 | av永久 | 日韩精品久久久久 | 精品在线99 | 日韩美香港a一级毛片免费 国产综合av | 在线91| 欧美成人在线影院 | 日本视频免费观看 | 亚洲一区在线播放 | 成人一区二区视频 | 99精品国产一区二区青青牛奶 | 青草久久免费视频 | 亚洲精品一区二区三区蜜桃久 | 在线一区二区三区 | 日韩欧美一区二区三区免费观看 | 精品欧美一区二区三区久久久 | zzzwww在线看片免费 | a久久久久久 | 久久久久国产精品 | 欧美a在线看 | 9久久婷婷国产综合精品性色 | 色综合天天天天做夜夜夜夜做 | 精品久久久久久久人人人人传媒 | a中文在线视频 | 国产美女自拍视频 | 国产 亚洲 网红 主播 | 亚洲国产欧美国产综合一区 | 韩日在线观看视频 | 亚洲精品日韩在线观看 | xx视频在线 | 久久亚洲欧美日韩精品专区 | 国产精品久久片 | 国产精品免费小视频 | 中文字幕亚洲欧美日韩在线不卡 | 一区二区三区中文字幕 | 一级高清|