这是你如何在你的服务层呼叫你的Dao?

时间:2010-01-11 21:40:00

标签: java oop

在你的服务层,假设你有一个XX方法,你会如何引用你的Dao类?

public class SomeServiceImpl implements SomeService

    public void DoSomething(int someThingId){

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

    }

这样做有点太多了,并且希望是否有一种更容易更优雅的方式?

3 个答案:

答案 0 :(得分:7)

我使用Springframework来配置我的应用程序。这个框架有一个很好的功能,使我能够将依赖项注入我的服务层。因此,服务实现看起来像这样:

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

答案 1 :(得分:0)

我不确定它是如何“正确”但我经常为DAO对象(属性)制作私有getter并使它们延迟加载。使它不那么冗长。然后,如果在多个地方使用特定的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);
    }
}

答案 2 :(得分:0)

使用注释或xml配置在运行时注入dao依赖项。