2010-01-11 78 views
0

在你的服務層中,假設你有一個方法可以做到XX,這是如何引用你的Dao類的?這是你如何在服務層調用你的Dao?

public class SomeServiceImpl implements SomeService 

    public void DoSomething(int someThingId){ 

    UserDao userDao = this.daoFactory().GetUserDao(); 
    SalesDao salesDao = this.daoFactory().GetSalesDao(); 
    .. 
    .. 
    .. 

    } 

這樣做有點多,希望是否有更簡單更優雅的方式?

+0

這正是我沒有DI容器就能做到的!但是,如果你使用某種DI容器,例如春天,那麼它可以簡化爲@Ralph所說的,但除此之外,你有什麼是完美的恕我直言。但是如果你不熟悉DI,那麼值得一看,這會讓事情更加鬆散。 – David 2010-01-11 21:47:14

回答

7

我使用Springframework來配置我的應用程序。這個框架有很好的特性,使我能夠將依賴注入到我的服務層。因此,服務的實現看起來就像這樣:

@Autowired 
private UserDAO userDao; 
public void doSomething(int someThingId) { 
userDAO.findById(someThingId); 
... 
} 
+1

+1依賴注入 – Sapph 2010-01-11 21:44:53

0

我不知道它是如何「正確」是,但我經常做私人干將的DAO對象(屬性),並使其延遲加載。使其不那麼冗長。然後,您可以創建一個基礎服務類,如果特定道在幾個地方使用...

public class SomeServiceImpl implements SomeService 
{ 
    private UserDao _UserDao 

    private UserDao getUserDao() 
    { 
     if (_UserDao == null) 
     { 
      _UserDao = DaoFactory.GetUserDao(); 
     } 

     return _UserDao; 
    } 

    public void DoSomething(int somethingId) 
    { 
     this.getUserDao().findById(somethingId); 
    } 
} 
0

無論是使用註釋或XML配置,在運行時注入DAO的依賴性。

相關問題