簡體   English   中英

someMethod(SomeClass.class) 的底層過程

[英]underlying procedure for someMethod(SomeClass.class)

在休眠中創建我們使用的標准

Criteria criterea=session.createCritera(SomeClass.class)

它也可能在其他一些示例中可用,但我無法理解這些類型方法的結構。

注意這是我試圖理解使用SomeClass.class類的參數的一個例子

我的問題是SomeClass.class目的是什么? 我們為什么需要它,使用它作為參數有什么好處。

編輯它不是重復但與此問題有字符串連接

這個.class語法是什么?

如果您將.class附加到類名的末尾,您將獲得與Class<T>對應的Class<T>對象。

例子:

  • String.class返回Class<String>的實例
  • Integer.class返回Class<Integer>一個實例

你可以用一個類對象做什么

反射! 如果你可以訪問一個類對象,你就可以做各種很酷的事情! 您可以調用方法,獲取和設置字段的值...

為什么在 Hibernate 中使用它?

我以前沒有使用過 hibernate,但這種語法也用於其他庫,尤其是在 ORM 或 JSON 序列化程序中。 我將使用 JSON 序列化程序作為示例,因為我對它們更熟悉。

在 JSON 序列化器中,您需要給它一個類對象,因為它需要獲取您想要序列化為 JSON 的所有字段。 它使用反射來獲取和設置這些字段的值,然后將它們轉換為 JSON。 當它反序列化 JSON 時,它會在 JSON 中找到需要設置名稱的字段。 這些操作需要一個Class對象,因為沒有它,Java 怎么知道它應該找到哪個類? 此外,要使用反射創建新對象,還需要一個Class

Hibernate 提供了許多方法來處理與 RDBMS 表相關的對象。 一種方法是 Session 接口提供 createCriteria() 方法,該方法可用於創建 Criteria 對象。 顧名思義,通過應用過濾規則和程序員希望的邏輯條件來執行查詢是很有用的。

例如:

Criteria obj=session.createCritera(Galaxy.class) // say SomeClass is Galaxy.class
List results = obj.list();

在這里,標准查詢將簡單地返回對應於 Galaxy 類的每個對象。

我們甚至可以使用條件限制結果,例如 Criteria 對象可用的 add() 方法為條件查詢添加限制。 以下是從 Galaxy 類返回具有 74 億人口的行星的記錄的限制:

Criteria cr = session.createCriteria(Galaxy.class);
cr.add(Restrictions.eq(“planet”, 75000000000));
List results = cr.list();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM