概述
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 | 指定使用静态名称的查询。 |
最后
以上就是微笑学姐为你收集整理的JPA映射文件和注解解释的全部内容,希望文章能够帮你解决JPA映射文件和注解解释所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复