[英]Service and DAO classes in JAVA
我有3個DAO和服務類,分別針對項目 , 客戶和問題 。 我還有一個使用JIRA API的jiraService類。 用例是我使用API在JIRA中為客戶的項目創建問題。 創建問題后,我將存儲客戶信息。 客戶表中的響應信息。 從JIRA發布到問題表中,然后將問題ID,客戶ID存儲在項目表中,這樣我就知道哪個問題與哪個客戶和項目有關。 現在我有一些問題-
好的,首先,您不應該直接從另一個(3)調用一個DAO類,因為那樣會破壞安全性。 正確的方法是創建兩個對象,然后從第二個實例化第一個。 例如,您通過按客戶名稱搜索到的customerID,並與customerDAO對象一起存儲。 然后,使用該信息,您可以使用來自customerDAO對象的信息,在projectDAO對象上獲取該客戶的所有項目,但不直接將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類上也可以。
希望它有幫助:)
從上面可以明顯看出,這種2N層設計。 假定以下內容:服務分別命名為ProjectService,CustomerService,IssueService和JiraService; DAO類是ProjectDAO,CustomerDAO和IssueDAO。 請記住,依賴關系必須依賴於抽象而不是依賴。 關於扎實原則的不錯的文章
JiraService的目的是通過使用API來更新JIRA。 從JiraService保存到數據訪問層可能並不明智,因為這違反了單一責任原則 。
進行繼承的時間-父類將具有基本的CRUD操作-示例BaseDAO,所有子DAO類均可對其進行擴展。 可以將特定行為添加到子類中。 示例:CustomerDAO.getCustomerByID(),CustomerDAO.getCustomersBySurname()。
3需要定義實體之間的關系。 JPA可以用來實現這一目標。 一種替代方法是使用DAO,該DAO從相關表中檢索所有數據並將數據映射到模型/值對象-示例客戶,項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.