2014-02-22 46 views
0

我希望創建一個應儘量減少項目之間依賴關係的項目。我的項目結構如下。減少項目之間的依賴關係

com.example.persistence它將包含所有實體和一個BaseDao,其中將包含用於保存實體的保存方法。

package com.example.pl; 

public class BaseDao { 

    public void save(Object obj){ 
     System.out.println("Saved the object"+obj); 
    } 

} 

com.example.dao將包含用於保存實體到database.The保存方法基本上調用BaseDao.save方法這是在persitence層的方法。

package com.example.dao; 

import com.example.pl.BaseDao; 

public class EmployeeDao extends BaseDao{ 

    @Override 
    public void save(Object obj) { 
     // TODO Auto-generated method stub 
     super.save(obj); 
    } 

} 

com.example.service哪個是哪個將訪問Dao.Save()方法的服務層。

現在我寫在服務層本身就是一個主要的方法來測試我經營的主要方法dependencies.when它提供了以下comilation錯誤

package com.example.sl; 

import com.example.dao.EmployeeDao; 

public class EmployeeService { 

    public static void main(String[] args) { 
     EmployeeDao dao =new EmployeeDao(); 
     dao.save(null); 
    } 

} 



The type com.example.pl.BaseDao cannot be resolved. It is indirectly referenced from required .class files 

我知道我錯過了罐子從持久層在服務層。所以沒有任何方式沒有添加服務層中的持久層的依賴性?

回答

0

如果不知道如何組織項目,很難回答。所以,我會冒昧地假設你正在使用Maven。我將假設你定義了三個項目/模塊(persitence,dao,service),這將導致persistence.jar,dao.jar和service.jar。

所以,服務模塊依賴於dao模塊,dao模塊依賴於持久化模塊。像工具這樣的maven的美妙之處在於它會傳遞依賴關係。所以,pom.xml(maven artifact - 定義項目定義)只會聲明對dao的依賴。

但是,只是直接回答你的問題,你從類路徑中缺少持久化的lib jar。再次,很難回答不知道你的項目結構。

+0

是的。你說的是對的。 Iam缺少persistence.jar。但是,如果我添加persistence.jar,我會違反項目結構。這是我面臨的實際問題。我不想在我的服務器中添加persistence.jar。是否有可能重新討論這個問題?我編輯了我的問題。 – JavaPassion

+0

如果您正在使用maven/gradle來構建項目,則只需包含dao.jar即可。因爲,dao.jar依賴於Persistence.jar,它將被傳遞地包含在內。這樣,你就不會違反你的項目結構。我可以問你是否使用任何像Maven或Gradle這樣的項目管理工具。 – vijar

0

以某種形式或方式,您將不得不添加持久性依賴項。如果您正在使用maven多模塊項目,如果您嘗試在子項目中運行maven命令,則有時會發生此錯誤,因爲它無法從其他模塊中找到jar。如果這是一個普通的maven項目,並且你的dao.jar依賴於persistence.jar,它應該通過傳遞依賴將persistence.jar引入到你的項目中。 (最終結果是,即使您沒有專門參考,也可以通過某種方式獲得它)。

如果您未使用maven或其他某個依賴項管理工具,則需要放置持久性。 jar放入你的類路徑/項目中。如果你已經正確設置了依賴關係,並且沒有試圖讓服務排除來自DAO層的傳遞依賴關係的持久性,那麼依賴關係管理工具就是爲你做的。你的DAO中有對象,它們被編譯在persistence.jar中的對象之上。它必須有權訪問這些人來編譯你的項目。

0

從它聽起來,你擁有了它內置的出路......

  • dao取決於persistence,並且
  • service取決於dao

應該只是工作。你不能直接放在persistenceservice層根據,但您使用的確實一個組成部分。除了任何可能被我們任何人忽略的東西,您的依賴鏈不會引起對persistence的直接依賴。

取決於你如何做這個(Maven的,搖籃,常春藤等),也可能是有利於這些分離成各自獨立的模塊;這樣,層次結構就很清晰,並且引入無意的依賴關係的可能性非常小。

隨着該層次結構,您將確保daopersistence一個depdendency,並servicedao的依賴。