Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate @Table注释在JPA中有什么用途?_Hibernate_Jpa - Fatal编程技术网

Hibernate @Table注释在JPA中有什么用途?

Hibernate @Table注释在JPA中有什么用途?,hibernate,jpa,Hibernate,Jpa,使用这些注释的全部目的是独立于数据库提供者,而不是重新生成JAR归档 如果我将@Table(name=myDatabase.myTableName)作为核心,我首先就看不到使用hibernate的意义。如果我决定切换到其他数据库提供程序,那么我必须修改类中的@Table(name=myDatabase.myTableName)注释,然后重新编译应用程序 @表格注释: @Table注释允许您指定将用于在数据库中持久化实体的表的详细信息 @Table注释提供了四个属性,允许您覆盖表的名称、目录和模式

使用这些注释的全部目的是独立于数据库提供者,而不是重新生成JAR归档


如果我将
@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中指定,或者由您用于连接数据库的名称暗示。