<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Hibernate 4 注解配置 > 原文: [https://javabeginnerstutorial.com/hibernate/hibernate-4-annotations-configuration/](https://javabeginnerstutorial.com/hibernate/hibernate-4-annotations-configuration/) 在最后的介紹性文章中,我提到了所謂的“XML 地獄”,它是 XML 在 Hibernate 配置中的大量使用。 在本文中,我將介紹基于注解的配置,您可以在其中使用 Hibernate 在實體上的注解來減少所需的 XML 數量。 ## 為什么注解很好 正如您將在示例代碼中看到的那樣:使用注解,您可以在實體類定義本身中看到屬性映射是什么,因此您無需查找正確的`.hbm.xml`文件即可查找映射定義。 而且有一個很好的副作用:您只需要修改實體。 例如,如果要向`Book`類添加新的`Date`字段,則還需要在`Book.hbm.xml`文件中添加映射。 使用注解,這只是 Java 類中的更改。 您將在本文后面的示例中找到有關使用日期的示例。 ### 一個示例 在此示例中,我將繼續使用第一篇文章中介紹的`Book`實體。 現在,我將轉換 POJO 以使用注解而不是 XML 配置-在本系列的后續部分中,我將繼續介紹。 這是因為注解比 XML 更易于閱讀和查找。 #### 實體 對于實體,我需要添加一些注解以表示與 XML 文件中相同的映射。 第一個是告訴 Hibernate `Book`類是一個實體。 我們可以通過`@Entity`注解來實現。 否則,Hibernate 將在啟動時引發異常,并顯示錯誤消息“`hibernate_example.Book`”是未知實體。 下一個是表定義。 我將書添加到`BOOKS`表中。 如果沒有明確的表定義,Hibernate 會將實體添加到 `BOOK`表中。 通常,我可以說沒有表定義,實體將保存在與實體類相同名稱的表中。 要命名表,我必須在類上使用`@Table`。 該注解具有名為*名稱*的參數。 此名稱定義表的名稱-因此我添加了此屬性并將其命名為 `BOOKS`。 最后,我將 ISBN 定義為實體的 **ID**。 這是通過`@ID`注解完成的。 讓我們看看整個修改后的實體: ```java @Entity @Table(name = "BOOKS") public class Book { ?? @Id ?? private String isbn; ?? private String title; ?? private String author; ?? // other parts stayed the same so I omit them here } ``` #### 配置 配置文件需要進行一次修改:我必須在最后將*映射*標記從使用**資源**更改為**類**,并提供映射類的限定名稱 : ```java <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">org.h2.Driver</property> <property name="connection.url">jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE</property> <property name="connection.username">sa</property> <property name="connection.password"/> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.H2Dialect</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">create</property> <!-- The mapping information of entities --> <mapping class="hibernate_example.Book"/> </session-factory> </hibernate-configuration> ``` #### 映射文件 可以刪除映射文件,因為 Hibernate 不再使用它了。 ## 擴展實體 前面我提到過,添加日期字段有點復雜,因為映射日期并不是那么簡單的動作。 為此,我需要在字段上使用`@Temporal`注解,以告知 Hibernate 我要將日期存儲在數據庫中,并且當我讀取數據庫時希望返回日期信息。 `javax.persistence.TemporalType`告訴我要存儲哪種信息。 現在是日期。 ```java @Temporal(TemporalType.DATE) private Date published; ``` 對于其他正在閱讀您的代碼的開發人員來說,這很清楚,已將字段`published`映射為應用和數據庫之間的 Date 類型。 對于 XML 配置,我將不得不使用以下配置: ```java <property name="date" type="date" /> ``` ## 運行應用 該應用也可以像上一篇文章中那樣運行,并且結果相同。 ## 總結 Hibernate 可以利用一組標準注解來消除映射 XML 文件的需要。 通過使用標準`javax.persistence`注解,您可以從 Hibernate 切換到另一個實現標準接口的 ORM 解決方案。 但是,如今有些開發人員正在談論“注解地獄”,因為您幾乎可以使用注解配置任何內容,有時這會使應用的可讀性變差。 在下一篇文章中,我將向您展示如何使用 Hibernate 建模實體之間的關系。 #### 代碼下載 您可以從 Github [此處](https://github.com/JBTAdmin/Hibernate)下載特定章節的代碼。
                  <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>

                              哎呀哎呀视频在线观看