2013-09-05 54 views
0

我正在構建一個Spring MVC Web應用程序,它使用JPA/Hibernate來存儲對象。我有一個問題被視爲域對象,以及如何正確使用它們。有一些具有依賴性的域對象。一個示例可以是具有分配給它的區域實體的公司實體。Java Spring,使用域對象

E-R relation diagram

我有一個簡單的輔助類這是我從控制器,它的任務是基於內容讀取URL地址的XML文件,分析其內容,並返回新公司的對象類調用。

class MyCustomHelper { 
    MyCustomService myCustomService; 

    //I have to pass myCustomService to be able to fetch existing Region entities from db 
    public MyCustomHelper(MyCustomService myCustomService){ 
     this.myCustomService = myCustomService; 
    } 

    public Company createCompanyObjectFromUrl(){ 
     //I get these values via xml parser in the app 
     String name = "Company name"; 
     String address = "Address of a company"; 
     Integer regionId = 19; 

     //Create new instance of entity and fill it with data 
     Company company = new Company(); 
     company.setName(name); 
     company.setAddress(address); 

     //Assign already existing region to new Company 
     Region region = this.myCustomService.findOneRegion(regionId); 
     company.setRegion(region); 
     return company; 
} 

}

這種方法的工作原理,但我不知道這是否是正確的或錯誤的設計。如果我的公司對象只是普通對象而沒有任何依賴關係,那麼創建新公司將很容易,併爲其設置String和Integer值。但這不是一個例子。

創建新公司時,我還必須創建與現有區域的連接。我通過在我的幫助器的構造函數中傳遞一個服務對象來完成它,它從數據庫中獲取現有的區域。

一旦一個新的公司被傳遞迴控制器,還有就是設置它的一些其他的屬性,然後將其保存到數據庫中。

我有一種感覺,這不是(通過服務實例的輔助類)一個非常好的方法。也許在助手中創建某種DTO對象會更乾淨,將其返回給控制器,然後將其映射到Domain對象。

或者它只是好嗎?

回答

1

我覺得myCustomHelper實際上是更好的命名ImportService或類似的,即它的服務本身,它是精細注入另一個服務進去。

相關問題