2016-06-09 58 views
2

使用這些註釋的重點是獨立於數據庫提供者,而不是重新生成JAR歸檔。JPA中@Table註釋的用法是什麼?

如果我堅持@Table (name = myDatabase.myTableName)我沒有看到首先使用hibernate的重點。如果我決定切換到不同的數據庫提供者,那麼我將不得不修改我的類中的@Table (name = myDatabase.myTableName)註釋,並重新編譯該應用程序。

+1

你所說的只是反映了爲什麼很多人(包括我自己)不建議將特定於數據庫的信息放入Java代碼中,而是將其保存爲XML,所以一切都更加便攜。有些人喜歡在他們的Java文件中包含所有東西,並使代碼看起來更難以閱讀:-S即個人偏好,所以如果您要使用XML,或者依賴於JPA定義的默認值,請使用它。 –

+0

你尼爾。我認爲'@ Table'註釋有其用處。我將忽略那些教授如何在java類中使用註釋的在線教程。它們誤導 – Emily

+1

爲什麼要在名稱中放置「myDatabase」而不是表名?什麼會阻止你在Oracle,PostgreSQL和MySQL中使用相同的表名?假設你永遠不會改變,這是不會發生的。 –

回答

3

@Table註解: @Table註解允許您指定將用於在數據庫中持久化該實體的表的詳細信息。

@Table註釋提供了四個屬性,允許您覆蓋表名,其目錄及其模式,並對錶中的列強制執行唯一約束。現在我們只使用EMPLOYEE的表名。

@Entity 
@Table(name = "EMPLOYEE") 
public class Employee { 
    @Id @GeneratedValue 
    @Column(name = "id") 
    private int id; 
} 

只需在此處添加表名,並且不需要在java代碼中提供數據庫名稱。 http://docs.oracle.com/javaee/5/api/javax/persistence/Table.html

+0

謝謝。但是,我在哪裏指定數據庫名稱(模式)?在你提供的鏈接中,仍然應該註解@Table(name =「CUST」,schema =「RECORDS」)' – Emily

+0

我正在設置像http://tomee.apache.org/datasource-config這樣的連接。 html – Emily

+1

模式通常在JDBC連接URL中指定,或者用於連接到數據庫的名稱所暗示。 –