5.10. 将实体 Bean 迁移到 Jakarta Persistence
对 EJB 实体 Bean 的支持在 Jakarta EE 8 中是可选的,在 JBoss EAP 7 中不支持它们。
在以前的 JBoss EAP 版本中,实体 Bean 通过扩展 javax.ejb.EntityBean 类和实施必要的方法,在应用源代码中创建。然后,在 ejb-jar.xml 文件中配置它们。CMP entity bean 由一个 <entity> 元素来指定,该元素包含值为 Container 的 <persistence-type> 子元素。BMP entity bean 由一个 <entity> 元素来指定,其中包含一个 <persistence-type> 子元素,值为 Bean。
在 JBoss EAP 7 中,您必须将您的代码中的任何 CMP 和 BMP 实体 Bean 替换为 Jakarta Persistence 实体。Jakarta Persistence 实体使用 javax.persistence.* 类创建,并在 persistence.xml 文件中定义。
以下是 Jakarta Persistence 实体类的示例:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
// User is a keyword in some SQL dialects!
@Table(name = "MyUsers")
public class MyUser {
@Id
@GeneratedValue
private Long id;
@Column(unique = true)
private String username;
private String firstName;
private String lastName;
public Long getId() {
return id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
以下是 persistence.xml 文件的示例。
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="my-unique-persistence-unit-name">
<properties>
// properties...
</properties>
</persistence-unit>
</persistence>
有关 Jakarta Persistence 实体的工作示例,请查看 JBoss EAP 7 附带的 bmt、cmt 和 hibernate5 快速入门。