转载

Hibernate映射文件

   

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

虽然很多Hibernate用户选择手工编写XML中,有一些工具可以用来生成映射文档。包括XDoclet,Middlegen和AndroMDA等用于高级Hibernate的用户。

让我们考虑我们的对象将坚持在下一节中定义的表前面定义的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如何定义的一个或多个类映射到数据库表下面的映射文件。

 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC   "-//Hibernate/Hibernate Mapping DTD//EN"  "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">   <hibernate-mapping>    <class name="Employee" table="EMPLOYEE">       <meta attribute="class-description">          This class contains the employee detail.        </meta>       <id name="id" type="int" column="id">          <generator class="native"/>       </id>       <property name="firstName" column="first_name" type="string"/>       <property name="lastName" column="last_name" type="string"/>       <property name="salary" column="salary" type="int"/>    </class> </hibernate-mapping>

保存的映射文件中的格式: <classname>.hbm.xml。我们保存映射文件中的文件Employee.hbm.xml。来看看关于在映射文件中使用的映射元素的小细节:

  • 映射文档是具有<hibernate-mapping>为包含所有的<class>元素的根元素的XML文档。

  • 在<class>元素被用于定义数据库表从一个Java类特定的映射。 Java类名指定使用class元素的name属性和使用表属性数据库表名指定。

  • <meta>元素是可选元素,可以用来创建类的描述。

  • <id>元素映射在类中的唯一ID属性到数据库表的主键。 id元素的name属性是指属性的类和column属性是指在数据库表中的列。 type属性保存了Hibernate映射类型,这种类型的映射将会从Java转换为SQL数据类型。

  • id元素内的<generator>元素被用来自动生成的主键值。将生成元素的class属性设置为原生让Hibernate拿起无论是identity,sequence或者hilo中的算法来创建主键根据底层数据库的支持能力。

  • <property>元素用于一个Java类的属性映射到数据库表中的列。元素的name属性是指属性的类和column属性是指在数据库表中的列。 type属性保存了Hibernate映射类型,这种类型的映射将会从Java转换为SQL数据类型。

还有这将在映射文件中使用,接下来尽量覆盖尽可能多其他的Hibernate相关主题的其他属性和可用的元素。

   
正文到此结束
Loading...