<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Hiberate 注解與映射 – 優缺點 > 原文: [https://howtodoinjava.com/hibernate/pros-and-cons-of-hibernate-annotations-vs-mappings/](https://howtodoinjava.com/hibernate/pros-and-cons-of-hibernate-annotations-vs-mappings/) 您可能知道,在內聯注解之前,創建 Hiberate 映射的唯一方法是通過 XML 文件。 盡管來自 Hibernate 和第三方項目的各種工具允許部分或全部映射從 Java 源代碼自動生成。 如今,注解是定義映射的最新方法,但并不是自動的最佳方法。 讓我們先討論 Hiberate(或我應該說 JPA)注解的缺點和好處,然后再討論何時應用它們。 ## Hiberate 注解的缺點 讓我們一一列出所有可能的缺點。 * 如果要從 Hibernate 2 環境升級或使用現有的 Hibernate 3 環境,則您將已經具有基于 XML 的映射文件來支持您的代碼庫。 在所有其他條件都相同的情況下,您不希望僅出于注解目的而使用注解重新表達這些映射。 您將要堅持使用映射,因為它們仍然可以正常運行并且運作良好。 * 因此,如果您要從舊版環境遷移,則可能不希望更改現有的 POJO 源代碼,換句話說,您將不會注入可能存在錯誤的已知良好代碼。 * 如果您沒有 POJO 的源代碼(因為它是由自動化工具或類似的代碼(例如舊版代碼)生成的),則與反編譯類文件以獲得 Java 源代碼相比,您可能更喜歡使用基于 XML 的外部映射 更改代碼。 * 通過將映射信息保留為外部 XML 文件,可以修改映射信息以反映業務更改或架構更改,而不必強制您重新構建整個應用。 ## Hiberate 注解的優點 考慮了缺點之后,使用注解會有一些強大的好處。 * 首先,也許是最有說服力的是,我們發現基于注解的映射比基于 XML 的替代更加直觀,因為它們與相關的屬性一起直接出現在源代碼中。 大多數編碼人員傾向于使用注解,因為必須保持較少的文件同步。 * 部分原因是,注解不如 XML 等效項那么冗長。 讓我們看一下比較 ```java import javax.persistence.* ; @Entity public class Sample { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Integer id; public String name; } ``` 并將其與等效的映射文件進行比較。 ```java <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd "> <hibernate-mapping default-access="field"> <class name="Sample"> <id type="int" column="id"> <generator class="native"/> </id> <property name="name" type="string"/> </class> </hibernate-mapping> ``` 后者的一些冗長是 XML 本身的本質(標記名和樣板文檔類型聲明),而某些是由于注解與源代碼的緊密集成所致。 * 另一個主要的好處是 Hiberate 使用并支持 JPA2 持久化注解。 如果選擇不在代碼和注解中使用特定于 Hibernate 的功能,則可以使用支持 JPA2 的其他 ORM 工具將實體部署到環境中。 * 最后,也許是次要的一點,因為注解被直接編譯到適當的類文件中,因此丟失或陳舊的映射文件在部署時引起問題的風險較小。 ## 選擇使用哪個 通常,更喜歡注解; 注解本身可以在 JPA 實現中移植,并且眾所周知。 工具可以直接從數據庫中創建帶注解的源代碼,因此,即使使用預先存在的模式,同步也沒有多少麻煩。 XML 映射既可以采用 Hibernate 的專有格式,也可以采用 JPA 的標準 XML 配置,它們相似但不相同; 如果您以某種方式發現 XML 是首選的配置格式,則最好使用行業標準 JPA 配置中的 XML 格式。 讓我知道您的想法,您更喜歡哪種,為什么? **祝您學習愉快!**
                  <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>

                              哎呀哎呀视频在线观看