📅  最后修改于: 2020-12-21 02:07:40             🧑  作者: Mango
EJB持久性机制中使用了复合实体模式。复合实体是表示对象图的EJB实体bean。当更新组合实体时,内部相关对象Bean将自动更新,如由EJB实体Bean管理的那样。以下是“复合实体Bean”的参与者。
复合实体-它是主要实体bean。它可以是粗糙的,也可以包含用于持久性目的的粗糙的对象。
粗粒对象-该对象包含相关对象。它具有自己的生命周期,并且还管理相关对象的生命周期。
从属对象-从属对象是依赖于粗粒度对象的持久性生命周期的对象。
策略-策略代表如何实现复合实体。
我们将创建充当CompositeEntity的CompositeEntity对象。 CoarseGrainedObject将是一个包含依赖对象的类。 CompositeEntityPatternDemo ,我们的演示类将使用Client类来演示Composite Entity模式的使用。
创建从属对象。
DependentObject1.java
public class DependentObject1 {
private String data;
public void setData(String data){
this.data = data;
}
public String getData(){
return data;
}
}
DependentObject2.java
public class DependentObject2 {
private String data;
public void setData(String data){
this.data = data;
}
public String getData(){
return data;
}
}
创建粗粒度对象。
CoarseGrainedObject.java
public class CoarseGrainedObject {
DependentObject1 do1 = new DependentObject1();
DependentObject2 do2 = new DependentObject2();
public void setData(String data1, String data2){
do1.setData(data1);
do2.setData(data2);
}
public String[] getData(){
return new String[] {do1.getData(),do2.getData()};
}
}
创建复合实体。
CompositeEntity.java
public class CompositeEntity {
private CoarseGrainedObject cgo = new CoarseGrainedObject();
public void setData(String data1, String data2){
cgo.setData(data1, data2);
}
public String[] getData(){
return cgo.getData();
}
}
创建Client类以使用Composite Entity。
客户端.java
public class Client {
private CompositeEntity compositeEntity = new CompositeEntity();
public void printData(){
for (int i = 0; i < compositeEntity.getData().length; i++) {
System.out.println("Data: " + compositeEntity.getData()[i]);
}
}
public void setData(String data1, String data2){
compositeEntity.setData(data1, data2);
}
}
使用客户端演示组合实体设计模式的用法。
CompositeEntityPatternDemo.java
public class CompositeEntityPatternDemo {
public static void main(String[] args) {
Client client = new Client();
client.setData("Test", "Data");
client.printData();
client.setData("Second Test", "Data1");
client.printData();
}
}
验证输出。
Data: Test
Data: Data
Data: Second Test
Data: Data1