📜  Hibernate-映射文件

📅  最后修改于: 2020-11-16 06:58:23             🧑  作者: Mango


对象/关系映射通常在XML文档中定义。该映射文件指示Hibernate —如何将已定义的一个或多个类映射到数据库表?

尽管许多Hibernate用户选择手工编写XML,但是存在许多工具来生成映射文档。其中包括面向高级Hibernate用户的XDoclet,MiddlegenAndroMDA

让我们考虑一下我们先前定义的POJO类,其对象将保留在下一部分定义的表中。

public class Employee {
   private int id;
   private String firstName; 
   private String lastName;   
   private int salary;  

   public Employee() {}
   
   public Employee(String fname, String lname, int salary) {
      this.firstName = fname;
      this.lastName = lname;
      this.salary = salary;
   }
   
   public int getId() {
      return id;
   }
   
   public void setId( int id ) {
      this.id = id;
   }
   
   public String getFirstName() {
      return firstName;
   }
   
   public void setFirstName( String first_name ) {
      this.firstName = first_name;
   }
   
   public String getLastName() {
      return lastName;
   }
   
   public void setLastName( String last_name ) {
      this.lastName = last_name;
   }
   
   public int getSalary() {
      return salary;
   }
   
   public void setSalary( int salary ) {
      this.salary = salary;
   }
}

将有一个表对应于您愿意提供持久性的每个对象。考虑上述对象需要存储并检索到以下RDBMS表中-

create table EMPLOYEE (
   id INT NOT NULL auto_increment,
   first_name VARCHAR(20) default NULL,
   last_name  VARCHAR(20) default NULL,
   salary     INT  default NULL,
   PRIMARY KEY (id)
);

基于以上两个实体,我们可以定义以下映射文件,该文件指导Hibernate如何将已定义的一个或多个类映射到数据库表。


 


   
      
      
         This class contains the employee detail. 
      
      
      
         
      
      
      
      
      
      
   

您应该将映射文档保存为格式为 .hbm.xml的文件。我们将映射文档保存在文件Employee.hbm.xml中。

让我们看一下有关映射文件中使用的映射元素的一些细节-

  • 映射文档是具有作为根元素的XML文档,其中包含所有元素。

  • 元素用于定义从Java类到数据库表的特定映射。 Java类名称是使用class元素的name属性指定的,而数据库名称是使用table属性指定的。

  • 元素是可选元素,可用于创建类描述。

  • 元素将类中的唯一ID属性映射到数据库表的主键。 id元素的name属性引用该类中的属性,而column属性引用该数据库表中的列。 type属性包含休眠映射类型,此映射类型将从Java转换为SQL数据类型。

  • id元素中的元素用于自动生成主键值。将generator元素的class属性设置为native,以使休眠模式根据基础数据库的功能来选择身份,序列hilo算法以创建主键。

  • 元素用于将Java类属性映射到数据库表中的列。元素的name属性引用类中的属性,而column属性引用数据库表中的列。 type属性包含休眠映射类型,此映射类型将从Java转换为SQL数据类型。

还有其他可用的属性和元素,它们将在映射文档中使用,在讨论其他与Hibernate相关的主题时,我将尝试涵盖尽可能多的属性和元素。