Hibernate @Table注释在JPA中有什么用途?
使用这些注释的全部目的是独立于数据库提供者,而不是重新生成JAR归档Hibernate @Table注释在JPA中有什么用途?,hibernate,jpa,Hibernate,Jpa,使用这些注释的全部目的是独立于数据库提供者,而不是重新生成JAR归档 如果我将@Table(name=myDatabase.myTableName)作为核心,我首先就看不到使用hibernate的意义。如果我决定切换到其他数据库提供程序,那么我必须修改类中的@Table(name=myDatabase.myTableName)注释,然后重新编译应用程序 @表格注释: @Table注释允许您指定将用于在数据库中持久化实体的表的详细信息 @Table注释提供了四个属性,允许您覆盖表的名称、目录和模式
如果我将
@Table(name=myDatabase.myTableName)
作为核心,我首先就看不到使用hibernate的意义。如果我决定切换到其他数据库提供程序,那么我必须修改类中的@Table(name=myDatabase.myTableName)
注释,然后重新编译应用程序 @表格注释:
@Table注释允许您指定将用于在数据库中持久化实体的表的详细信息
@Table注释提供了四个属性,允许您覆盖表的名称、目录和模式,并对表中的列实施唯一约束。现在我们只使用表名EMPLOYEE
@Entity
@Table(name = "EMPLOYEE")
public class Employee {
@Id @GeneratedValue
@Column(name = "id")
private int id;
}
只需在这里添加表名,就不需要在java代码中提供数据库名 您所说的只是反映了为什么许多人(包括我自己)不建议将特定于数据库的信息放入Java代码中,而是将其保存在XML中,这样一切都更便于移植。有一些人喜欢把所有东西都放在Java文件中,让代码看起来更难阅读:-S即个人偏好,所以如果你想使用XML,就使用它,或者依赖JPA定义的默认值Hank you Neil。我认为
@Table
注释有它的用途。我将忽略那些教授如何在java类中使用注释的在线教程。他们误导了你为什么要把“myDatabase”放在名字的第一位,而不仅仅是表名?还有什么可以阻止您在Oracle、PostgreSQL和MySQL中使用相同的表名?假设您要切换,这是不会发生的。@NeilStockton您将不得不重新编译代码,即使您对XML进行了更改。在注释中,您不需要编写任何逻辑,因此在XML中所做的任何更改都需要在注释中完成。另外,如果您的表的PK是另一个表的FK,那么XML中不支持这种映射,因此您不能在这种情况下编写标准,这实际上增加了对DB的依赖性。谢谢。但是在哪里指定数据库名称(模式)?在您提供的链接中,它仍应位于annotation@Table(name=“CUST”,schema=“RECORDS”)
中。模式通常在JDBC连接URL中指定,或者由您用于连接数据库的名称暗示。