<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 5.1.3\. class 你可以使用`class`元素來定義一個持久化類: ``` <class name="ClassName" table="tableName" discriminator-value="discriminator_value" mutable="true|false" schema="owner" catalog="catalog" proxy="ProxyInterface" dynamic-update="true|false" dynamic-insert="true|false" select-before-update="true|false" polymorphism="implicit|explicit" where="arbitrary sql where condition" persister="PersisterClass" batch-size="N" optimistic-lock="none|version|dirty|all" lazy="true|false" entity-name="EntityName" check="arbitrary sql check condition" rowid="rowid" subselect="SQL expression" abstract="true|false" node="element-name" /> ``` | ![1](img/1.png) | `name` (可選): 持久化類(或者接口)的Java全限定名。 如果這個屬性不存在,Hibernate將假定這是一個非POJO的實體映射。 | |:--- |:--- | | ![2](img/2.png) | `table` (可選 - 默認是類的非全限定名): 對應的數據庫表名。 | | ![3](img/3.png) | `discriminator-value` (可選 - 默認和類名一樣): 一個用于區分不同的子類的值,在多態行為時使用。它可以接受的值包括 `null` 和 `not null`。 | | ![4](img/4.png) | `mutable` (可選,默認值為`true`): 表明該類的實例是可變的或者不可變的。 | | ![5](img/5.png) | `schema` (可選): 覆蓋在根`&lt;hibernate-mapping&gt;`元素中指定的schema名字。 | | ![6](img/6.png) | `catalog` (可選): 覆蓋在根`&lt;hibernate-mapping&gt;`元素中指定的catalog名字。 | | ![7](img/7.png) | `proxy` (可選): 指定一個接口,在延遲裝載時作為代理使用。 你可以在這里使用該類自己的名字。 | | ![8](img/8.png) | `dynamic-update` (可選, 默認為 `false`): 指定用于`UPDATE` 的SQL將會在運行時動態生成,并且只更新那些改變過的字段。 | | ![9](img/9.png) | `dynamic-insert` (可選, 默認為 `false`): 指定用于`INSERT`的 SQL 將會在運行時動態生成,并且只包含那些非空值字段。 | | ![10](img/10.png) | `select-before-update` (可選, 默認為 `false`): 指定Hibernate除非確定對象真正被修改了(如果該值為true-譯注),否則_不會_執行SQL `UPDATE`操作。在特定場合(實際上,它只在一個瞬時對象(transient object)關聯到一個 新的session中時執行的update()中生效),這說明Hibernate會在`UPDATE` 之前執行一次額外的SQL `SELECT`操作,來決定是否應該執行 `UPDATE`。 | | ![11](img/11.png) | `polymorphism(多態)` (可選, 默認值為 `implicit (隱式)` ): 界定是隱式還是顯式的使用多態查詢(這只在Hibernate的具體表繼承策略中用到-譯注)。 | | ![12](img/12.png) | `where` (可選) 指定一個附加的SQL`WHERE` 條件, 在抓取這個類的對象時會一直增加這個條件。 | | ![13](img/13.png) | `persister` (可選): 指定一個定制的`ClassPersister`。 | | ![14](img/14.png) | `batch-size` (可選,默認是`1`) 指定一個用于 根據標識符(identifier)抓取實例時使用的"batch size"(批次抓取數量)。 | | ![15](img/15.png) | `optimistic-lock(樂觀鎖定)` (可選,默認是`version`): 決定樂觀鎖定的策略。 | | (16) | `lazy` (可選): 通過設置`lazy="false"`, 所有的延遲加載(Lazy fetching)功能將被全部禁用(disabled)。 | | (17) | `entity-name` (可選,默認為類名): Hibernate3允許一個類進行多次映射( 前提是映射到不同的表),并且允許使用Maps或XML代替Java層次的實體映射 (也就是實現動態領域模型,不用寫持久化類-譯注)。 更多信息請看[第 4.4 節 “動態模型(Dynamic models)”](../Text/pr01_split_000.html "4.4\. 動態模型(Dynamic models)") and [第 18 章 _XML映射_](../Text/pr01_split_000.html "第 18 章 XML映射")。 | | (18) | `check` (可選): 這是一個SQL表達式, 用于為自動生成的schema添加多行(multi-row)約束_檢查_。 | | (19) | `rowid` (可選): Hibernate可以使用數據庫支持的所謂的ROWIDs,例如: Oracle數據庫,如果你設置這個可選的`rowid`, Hibernate可以使用額外的字段`rowid`實現快速更新。ROWID是這個功能實現的重點, 它代表了一個存儲元組(tuple)的物理位置。 | | (20) | `subselect` (可選): 它將一個不可變(immutable)并且只讀的實體映射到一個數據庫的 子查詢中。當你想用視圖代替一張基本表的時候,這是有用的,但最好不要這樣做。更多的介紹請看下面內容。 | | (21) | `abstract` (可選): 用于在`&lt;union-subclass&gt;`的繼承結構 (hierarchies)中標識抽象超類。 | 若指明的持久化類實際上是一個接口,這也是完全可以接受的。 之后你可以用元素`&lt;subclass&gt;`來指定該接口的實際實現類。 你可以持久化任何_static_(靜態的)內部類。 你應該使用標準的類名格式來指定類名,`比如:Foo$Bar`。 不可變類,`mutable="false"`不可以被應用程序更新或者刪除。 這可以讓Hibernate做一些小小的性能優化。 可選的`proxy`屬性允許延遲加載類的持久化實例。 Hibernate開始會返回實現了這個命名接口的CGLIB代理。當代理的某個方法被實際調用的時候, 真實的持久化對象才會被裝載。參見下面的“用于延遲裝載的代理”。 _Implicit_ (隱式)的多態是指,如果查詢時給出的是任何超類、該類實現的接口或者該類的 名字,都會返回這個類的實例;如果查詢中給出的是子類的名字,則會返回子類的實例。 _Explicit_ (顯式)的多態是指,只有在查詢時給出明確的該類名字時才會返回這個類的實例; 同時只有在這個`&lt;class&gt;`的定義中作為`&lt;subclass&gt;` 或者`&lt;joined-subclass&gt;`出現的子類,才會可能返回。 在大多數情況下,默認的`polymorphism="implicit"`都是合適的。 顯式的多態在有兩個不同的類映射到同一個表的時候很有用。(允許一個“輕型”的類,只包含部分表字段)。 `persister`屬性可以讓你定制這個類使用的持久化策略。 你可以指定你自己實現 `org.hibernate.persister.EntityPersister`的子類,你甚至可以完全從頭開始編寫一個 `org.hibernate.persister.ClassPersister`接口的實現, 比如是用儲存過程調用、序列化到文件或者LDAP數據庫來實現。 參閱`org.hibernate.test.CustomPersister`,這是一個簡單的例子 (“持久化”到一個`Hashtable`)。 請注意`dynamic-update`和`dynamic-insert`的設置并不會繼承到子類, 所以在`&lt;subclass&gt;`或者`&lt;joined-subclass&gt;`元素中可能 需要再次設置。這些設置是否能夠提高效率要視情形而定。請用你的智慧決定是否使用。 使用`select-before-update`通常會降低性能。如果你重新連接一個脫管(detache)對象實例 到一個`Session`中時,它可以防止數據庫不必要的觸發update。 這就很有用了。 如果你打開了`dynamic-update`,你可以選擇幾種樂觀鎖定的策略: * `version(版本檢查)` 檢查version/timestamp字段 * `all(全部)` 檢查全部字段 * `dirty(臟檢查)`只檢察修改過的字段 * `none(不檢查)`不使用樂觀鎖定 我們_非常_強烈建議你在Hibernate中使用version/timestamp字段來進行樂觀鎖定。 對性能來說,這是最好的選擇,并且這也是唯一能夠處理在session外進行操作的策略(例如: 在使用`Session.merge()`的時候)。 對Hibernate映射來說視圖和表是沒有區別的,這是因為它們在數據層都是透明的( 注意:一些數據庫不支持視圖屬性,特別是更新的時候)。有時你想使用視圖,但卻不能在數據庫 中創建它(例如:在遺留的schema中)。這樣的話,你可以映射一個不可變的(immutable)并且是 只讀的實體到一個給定的SQL子查詢表達式: ``` <class name="Summary"> <subselect> select item.name, max(bid.amount), count(*) from item join bid on bid.item_id = item.id group by item.name </subselect> <synchronize table="item"/> <synchronize table="bid"/> <id name="name"/> ... </class> ``` 定義這個實體用到的表為同步(synchronize),確保自動刷新(auto-flush)正確執行, 并且依賴原實體的查詢不會返回過期數據。`&lt;subselect&gt;`在屬性元素 和一個嵌套映射元素中都可見。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看