簡體   English   中英

當我導入 JPA 注釋並只使用單個 hibernate 屬性時,我是否在用例中使用 JPA 或 Hibernate?

[英]Am i working on JPA or Hibernate in the use case when i import JPA annotations and just use single hibernate property?

我可以在 stackoverflow 中看到類似的問題,但他引用的示例完全不同,並且給出了與此相關的答案。

在我們的項目中,我有 JPA 注釋

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

在 Persistance.xml 中,我也有休眠屬性:

<persistence-unit name="IntegratorMasterdataDS" transaction-type="JTA" >
            <provider>org.hibernate.ejb.HibernatePersistence</provider>
<!--            <jta-data-source>java:/datasources/Ifs9ErgointDS1</jta-data-source>  -->
                <jta-data-source>java:/datasources/IfsDS</jta-data-source>
        <properties>
            <property name="hibernate.archive.autodetection" value="class" />
            <property name="hibernate.show_sql" value="false" />
         <property name="hibernate.hbm2ddl.auto" value="create" />
        </properties>
    </persistence-unit>

   @PersistenceContext(unitName = "IntegratorMasterdataDS")
   protected EntityManager em;
   em.persist
   em.save
   em.flush
   em.find
   em.merge

我部署在 Wildfly 中,它使用 Hibernate 作為 JPA 實現。

當我被問到你是使用 JPA 還是 Hibernate 時,我應該回答什么?

根據目前的理解,如果我們在代碼或persistance.xml 中使用單個Hibernate 屬性,那么我們可以說我們正在使用Hibernate,因為它使項目依賴於hibernate。 這個理解好嗎?

如果沒有,那么我還應該在項目中添加什么來說明我正在使用休眠?

Java Persistence API (JPA) 是一種 Java 規范,用於在 Java 對象/類和關系數據庫之間訪問、持久化和管理數據

而 hibernate 是 JPA 的具體實現。

打個比方,將 JPA 視為接口,將休眠視為其具體實現之一。 因此,您可以說您正在使用 JPA 的休眠實現。

查看此鏈接以查看 JPA 的其他實現。

當我被問到你是使用 JPA 還是 Hibernate 時,我應該回答什么?

我使用 JPA 和 Hibernate 作為實現。

根據目前的理解,如果我們在代碼或persistance.xml 中使用單個Hibernate 屬性,那么我們可以說我們正在使用Hibernate,因為它使項目依賴於hibernate。 這個理解好嗎?

我會說:不。 您正在使用標准 JPA 注釋。 persistence.xml 中提供的屬性是可選的。 您不需要它們來使您的應用程序正常工作。 例如,您不需要show_sql hbm2ddl.auto可以替換為標准 JPA 屬性: https : hbm2ddl.auto

暫無
暫無

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

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