JPA映射文件和注解解释

xiaoxiao2021-02-28  21

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指定使用静态名称的查询。
转载请注明原文地址: https://www.6miu.com/read-1450165.html

最新回复(0)