Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 父类组件上CRUD操作的接口/设计模式_Java_Spring_Design Patterns_Interface_Wsdl - Fatal编程技术网

Java 父类组件上CRUD操作的接口/设计模式

Java 父类组件上CRUD操作的接口/设计模式,java,spring,design-patterns,interface,wsdl,Java,Spring,Design Patterns,Interface,Wsdl,我有一个父类ProcessDefinition,它是从WSDL生成的。它有十几个组件类。我的要求是: 从数据库中提取现有定义 将新定义插入数据库 更新数据库中的现有定义(可能需要插入、更新、删除定义的组件) 从数据库中删除定义 提取很容易,因为我检查数据库中是否存在每个组件,如果存在,则添加到定义中。为此,我打算使用带有方法的接口 public interface ComponentDAO { public void addComponentToDefinition(ProcessDef

我有一个父类ProcessDefinition,它是从WSDL生成的。它有十几个组件类。我的要求是:

  • 从数据库中提取现有定义
  • 将新定义插入数据库
  • 更新数据库中的现有定义(可能需要插入、更新、删除定义的组件)
  • 从数据库中删除定义
提取很容易,因为我检查数据库中是否存在每个组件,如果存在,则添加到定义中。为此,我打算使用带有方法的接口

public interface ComponentDAO 
{
 public void addComponentToDefinition(ProcessDefinition definition, String   environmentName);
}
我将为每个组件提供一个实现,它将从数据库中提取其组件信息(如果存在),创建所需的类并在定义中设置它

在spring中,我将配置该接口的列表并插入每个实现,然后在我的主DAO类中,我只需执行以下操作

ProcessDefinition definition = new ProcessDefinition()
definition.setProcessID(someID);
for (ComponentDAO c: this.getComponentDAOs)
{
  c.addComponentToDefinition(definition);
}
这很容易扩展,如果添加新组件,则不需要接触任何现有类。但是,在更新组件或创建新组件时,我需要知道组件类,即

public void update(ProcessComponentA component, String   environmentName);
public void update(ProcessComponentB component, String   environmentName);
使用泛型,我可以将接口定义为

public interface ComponentDAO<T>
{
 public void addComponentToDefinition(ProcessDefinition definition, String   environmentName);
 public void updateComponent(T component);
}
公共接口组件dao
{
public void addComponentToDefinition(ProcessDefinition,String environmentName);
公共无效更新组件(T组件);
}
这使ComponentDAO实现保持干净,但是在调用接口的主类中,我必须定义原始类型中的ComponentDAO列表,不需要类型转换,但是编译器无法完成类型检查,并导致关于参数化原始类型的警告


是否有一个设计模式,我应该使用这个?假设我忽略了hibernate或任何其他ORM框架。

IUD是指CRUD吗?是的,我在用SQL思考:)更新了标题。