您的位置:首页 > 其它

JPA映射文件和注解解释

2017-10-17 21:22 387 查看

Mapping.xml

mapping.xml文件指示JPA的供应者来映射实体类与数据库表。

让我们以Employee实体包含四个属性的一个例子。POJO类Employee实体的命名为:Employee.java,如下:

public class Employee
{
private int eid;
private String ename;
private double salary;
private String deg;
public Employee(int eid, String ename, double salary, String deg)
{
super( );
this.eid = eid;
this.ename = ename;
this.salary = salary;
this.deg = deg;
}

public Employee( )
{
super();
}

public int getEid( )
{
return eid;
}
public void setEid(int eid)
{
this.eid = eid;
}
public String getEname( )
{
return ename;
}
public void setEname(String ename)
{
this.ename = ename;
}

public double getSalary( )
{
return salary;
}
public void setSalary(double salary)
{
this.salary = salary;
}

public String getDeg( )
{
return deg;
}
public void setDeg(String deg)
{
this.deg = deg;
}
}

上面的代码是Employee实体POJO类。它包含四个属性eid, ename,salary, 和 deg。考虑这些属性为表的字段,并且eid作为该表的主键。现在,我们要设计Hibernate映射文件了。映射文件名为 mapping.xml 如下:

<? xml version="1.0" encoding="UTF-8" ?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" version="1.0">
<description> XML Mapping file</description>
<entity class="Employee">
<table name="EMPLOYEETABLE"/>
<attributes>
<id name="eid">
<generated-value strategy="TABLE"/>
</id>
<basic name="ename">
<column name="EMP_NAME" length="100"/>
</basic>
<basic name="salary">
</basic>
<basic name="deg">
</basic>
</attributes>
</entity>
</entity-mappings>

上述脚本用于与数据库表的映射实体类。在该文件中

<entity-mappings> : 标签定义的模式定义,允许实体标记为XML文件。

<description> : 标签提供了有关应用程序的描述。

<entity> : 标签定义要转换成数据库表中的实体类。属性类定义了POJO实体类的名称。

<table> : 标签定义的表名。如果想有两个类相同的名称以及该表中,则该标签是没有必要的。

<attributes> : 标签定义的属性(在表中的字段)。

<id> : 标记定义表中的主键。在<generated-value>标记定义了如何将主键值赋值,如Automatic, Manual或者使用 Sequence。

<basic> : 标签用于定义其余属性在表中。

<column-name> : 标签被用来在表中定义用户定义表的字段名。

注解

一般的XML文件用于配置特定的组件,或者映射两种不同规格的组件。在我们的例子中,我们要分别保持在一个框架的XML文件。这意味着在写一个映射的XML文件,我们需要比较用mapping.xml文件实体标签的POJO类的属性。

这里是解决方案。在类定义中,我们可以使用注释写配置的一部分。注解用于类,属性和方法。注释以'@'符号在类,属性或方法的注释中声明之前。 JPA的所有批注在javax.persistence包定义。

在这里,在我们的实例中使用的注释列表如下。

注解描述
@Entity声明类为实体或表。
@Table声明表名。
@Basic指定非约束明确的各个字段。
@Embedded指定类或它的值是一个可嵌入的类的实例的实体的属性。
@Id指定的类的属性,用于识别(一个表中的主键)。
@GeneratedValue指定如何标识属性可以被初始化,例如自动,手动,或从序列表中获得的值。
@Transient指定的属性,它是不持久的,即,该值永远不会存储在数据库中。
@Column指定持久属性栏属性。
@SequenceGenerator指定在@GeneratedValue注解中指定的属性的值。它创建了一个序列。
@TableGenerator指定在@GeneratedValue批注指定属性的值发生器。它创造了的值生成的表。
@AccessType这种类型的注释用于设置访问类型。如果设置@AccessType(FIELD),然后进入FIELD明智的。如果设置@AccessType(PROPERTY),然后进入属性发生明智的。
@JoinColumn指定一个实体组织或实体的集合。这是用在多对一和一对多关联。
@UniqueConstraint指定的字段和用于主要或辅助表的唯一约束。
@ColumnResult参考使用select子句的SQL查询中的列名。
@ManyToMany定义了连接表之间的多对多一对多的关系。
@ManyToOne定义了连接表之间的多对一的关系。
@OneToMany定义了连接表之间存在一个一对多的关系。
@OneToOne定义了连接表之间有一个一对一的关系。
@NamedQueries指定命名查询的列表。
@NamedQuery指定使用静态名称的查询。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: