hibernate3 提供了一種創新的方式來處理具有「顯性
(visibility)」
規則的資料,那就是使用hibernate filter。 hibernate filter是全域性有效的、具有名字、可以帶引數的過濾器, 對於某個特定的hibernate session
您可以選擇是否啟用(或禁用)某個過濾器。
一旦啟用了資料過濾器,則不管是資料查詢,還是資料載入,該過濾器將自動作用於所有資料,只有滿足過濾條件的記錄才會被選出來。
過濾器條件相當於定義乙個 非常類似於類和各種集合上的「where」
屬性的約束子句,但是過濾器條件可以帶引數。 應用程式可以在執行時決定是否啟用給定的過濾器,以及使用什麼樣的引數值。 過濾器的用法很像資料庫檢視,只不過是在應用程式中確定使用什麼樣的引數的。
過濾器分以下幾步:
1、定義過濾器。
節點之內的
節點:
1<
filter-def
name
="myfilter"
>23
<
filter-param
name
="myfilterparam"
type
="string"
/>45
filter-def
>
2、使用過濾器。
定義好之後,就可以在某個類中使用這個過濾器。通過元素將指定的過濾器應用到指定的持久化類
1<
class
name
="myclass"
...>23
...4
5<
filter
name
="myfilter"
condition
=":myfilterparam = my_filtered_column"
/>67
class
>
condition屬性值是乙個
sql風格的
where
子句,因此
condition
屬性所指定的過濾條件應該根據表明、列名進行過濾。
也可以在某個集合使用它:
1<
set
...>23
<
filter
name
="myfilter"
condition
=":myfilterparam = my_filtered_column"
/>45
set>
可以在多個類或集合中使用某個過濾器;某個類或者集合中也可以使用多個過濾器。
3、在程式中通過session
啟用過濾器。
session物件中會用到的方法有:
enablefilter(string filtername), getenabledfilter(string filtername),
和 disablefilter(string filtername). session
中預設是不啟用過濾器的,必須通過
session.enabledfilter()
方法顯式的啟用。 該方法返回被啟用的
filter
的例項。以上文定義的過濾器為例:
session.enablefilter("myfilter").setparameter("myfilterparam", "some-value");
下面是乙個完整的例項
過濾器的配置檔案
1<
package
="com.hibernate.domain"
>23
<
class
name
="person"
table
="person"
>45
<
id name
="id"
column
="person_id"
>67
<
generator
class
="identity"
/>8id
>910
<
property
name
="name"
type
="string"
/>
11<
property
name
="age"
type
="int"
/>
1213
14<
filter
name
="myfilter"
condition
=":filterparam = age"
/>
15class
>
1617
18<
filter-def
name
="myfilter"
>
19<
filter-param
name
="filterparam"
type
="int"
/>
20filter-def
>
21>
示例程式:
1public
class
personmanager 15}
16 }
一般來說如果某個篩選條件使用的很頻繁,那麼我們可以將該篩選條件設定為過濾器;如果是臨時的資料篩選,還是使用常規的查詢比較好。
golang 讀書筆記 資料型別
slice 切片 代表變長的序列,序列中每個元素都有相同的型別。乙個slice型別一般寫作t,其中t代表slice中元素的型別 slice的語法和陣列很像,只是沒有固定長度而已。乙個slice由三個部分構成 指標 長度和容量。指標指向第乙個slice元素對應的底層陣列元素的位址,要注意的是slice...
python讀書筆記 資料型別擴充套件
python 數字資料型別用於儲存數值。資料型別是不允許改變的,這就意味著如果改變量字資料型別的值,將重新分配記憶體空間。python 支援三種不同的數值型別 整型 int 通常被稱為是整型或整數,是正或負整數,不帶小數點。python3 整型是沒有限制大小的,可以當作 long 型別使用,所以py...
讀書筆記 資料分析思維(3)
5w2h分析法 基礎的產品經理思維法 what 產品是什麼?when 產品是麼時候上線?where 產品在 上線?why 使用者為什麼需要它?who 它是為誰設計的?how 產品怎麼運作的?how much 它有什麼付費功能?如何變現?當看到乙個產品可以利用5w2h來具體分析,然後製作產品週期計畫。...