2010-01-11 33 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的依赖性。