我有项目,客户和问题的3个DAO和服务类。我还有一个 jiraService 类,我在其中使用了JIRA API。用例是我使用API在JIRA中为客户的项目创建问题。创建问题后,我会存储客户信息。在客户表中,响应信息。来自JIRA的问题表,然后将问题ID,客户ID存储在项目表中,以便我知道哪个问题与哪个客户和项目有关。现在我有一些问题 -
答案 0 :(得分:1)
答案 1 :(得分:1)
好的,首先,你不应该直接从另一个DAO类中调用一个DAO类(3),因为这会破坏安全性。 正确的是创建两个对象并从第二个实例化第一个。例如,您可以通过客户名称搜索customerID,并将其与customerDAO对象一起存储。然后,使用该信息,您在projectDAO对象上获取该客户的所有项目,从customerDAO对象中获取信息,但不直接将customerDAO调用到de projectDAO对象,因为这将依赖于projectDAO。
您希望它们尽可能独立,因此您将它们连接到另一个用作控制器的类,例如您的jiraService类。有了这个,代码的外观应该是这样的:
CustomerDAO cdao= new CustomerDAO();
ProjectDAO pdao = new ProjectDAO();
//I will suppose that you used numeric ID and use a long variable to store the result
long id=cdao.getCustomerID("MyCustomerName");//This is just an example
List<Project> lp= pdao.getProjectsByCusID(id);
然后,如果说,你只需要从jour jiraService类(1)调用DAO对象,因为这不会影响你的代码。
最后,正如您之前所说,DAO应该包含CRUD方法(2),这意味着您可以实现您认为将使用的每个CRUD方法。 如果你认为你需要一个getProjectsByName(String)方法,只需要实现它,就像你自己的代码一样好,并且是一个CRUD方法,所以在DAO类上是可以的。
希望它有所帮助:)
答案 2 :(得分:1)
JiraService的目的是通过使用API更新JIRA。从JiraService保存到数据访问层可能不明智,因为这违反了single responsibility principle。
一些继承的时间 - Parent类将具有基本的CRUD操作 - 示例BaseDAO可以由所有Child DAO类扩展。可以将特定行为添加到子类。示例:CustomerDAO.getCustomerByID(),CustomerDAO.getCustomersBySurname()。
3需要定义实体之间的关系。 JPA可用于实现此目的。另一种方法是使用DAO从相关表中检索所有数据,并将数据映射到模型/值对象 - 示例客户,项目。