Hibernate過濾器使用竅門

2022-03-12 09:18:22 字數 1531 閱讀 7523

本文向大家介紹hibernate過濾器,可能好多人還不了解hibernate過濾器,沒有關係,看完本文你肯定有不少收穫,希望本文能教會你更多東西。

hibernate3新增了對某個類或者集合使用預先定義的hibernate過濾器條件(filter criteria)的功能。過濾器條件相當於定義乙個 非常類似於類和各種集合上的「where」屬性的約束子句,但是過濾器條件可以帶引數。

應用程式可以在執行時決定是否啟用給定的hibernate過濾器,以及使用什麼樣的引數值。 過濾器的用法很像資料庫檢視,只不過是在應用程式中確定使用什麼樣的引數的。

定義好之後,就可以在某個類中使用這個過濾器:

也可以在某個集合使用它:

可以在多個類或集合中使用某個過濾器;某個類或者集合中也可以使用多個過濾器。

session物件中會用到的方法有:enablefilter(string filtername), getenabledfilter(string filtername), 和 disablefilter(string filtername). session中預設是不啟用過濾器的,必須通過session.enabledfilter()方法顯式的啟用。 該方法返回被啟用的filter的例項。以上文定義的過濾器為例:

session.enablefilter("myfilter").setparameter("myfilterparam", "some-value");

注意,org.hibernate.filter的方法允許鏈式方法呼叫。(類似上面例子中啟用filter之後設定filter引數這個「方法鏈」) hibernate的其他部分也大多有這個特性。

下面是乙個比較完整的例子,使用了記錄生效日期模式過濾有時效的資料:

定義好後,如果想要保證取回的都是目前處於生效期的記錄,只需在獲取雇員資料的操作之前先開啟過濾器即可:

session session = ...;  

session.enabledfilter("effectivedate").setparameter("asofdate", new date());

list results = session.createquery("from employee as e where e.salary > :targetsalary")

.setlong("targetsalary", new long(1000000))

.list();

在上面的hql中,雖然我們僅僅顯式的使用了乙個薪水條件,但因為啟用了過濾器,查詢將僅返回那些目前雇用 關係處於生效期的,並且薪水高於一百萬美刀的雇員的資料。

`注意:

如果你打算在使用外連線(或者通過hql或load fetching)的同時使用過濾器,要注意條件表示式的方向(左還是右)。 最安全的方式是使用左外連線(left outer joining)。並且通常來說,先寫引數, 然後是操作符,最後寫資料庫欄位名。`

Java Filter過濾器使用

1 建立乙個servlet並且實現filter介面 該類需要實現filter介面中的init dofilter destory 方法 其中init 方法自動在專案啟動的時候載入,dofilter 在呼叫xml配置的路徑是載入,destory 方法在退出專案的時候進行。public class tes...

ApiController的過濾器使用

2.過濾器 message userinfo puserid,賬號密碼不正確!除錯使用 伺服器端獲取請求使用者的ip 1就是ip位址,估計你是win7或 vista的系統 或安裝了ipv6,這是ipv6的本地回環位址就是ipv4中的127.0.0.1 else 使用 伺服器 return useri...

ethereal 過濾器使用經驗

事實上,ethereal本身並不能抓包,它只能用來解析資料報 要抓取資料報,它需要借助於pcap。pcap在windows下面的實現稱作winpcap,現在最高的穩定版本是3.0。在linux下面,pcap一般都已經被預設安裝 常用的capture filter 常用的display filter ...