Java中的DAO模式是什么?业务对象是什么?

6

这是直接从this的Oracle文章中关于J2EE DAO模式的内容:

一切都非常清晰,但是“参与者”业务对象(正如他们所称)。

这里我引用了我想更深入了解的部分(特别是一个真实生活的例子(一个简单的例子)将非常有用)。

BusinessObject

BusinessObject代表数据客户端。它是需要访问数据源以获取和存储数据的对象。除了访问数据源的servlet或helper bean之外,BusinessObject可以实现为会话bean、实体bean或其他Java对象。

我正在尝试使用此模式作为练习(作为OCPJP考试的学生,需要理解DAO模式)。到目前为止,我有我的DataSource(MySQL数据库)、我的传输对象(名为Person的JavaBean)以及我的DAO对象在数据库和JavaBean(Person)之间进行适当的接口。

那么业务对象究竟是什么?

提前感谢您。

5个回答

8

业务对象是聚焦于您应用程序所有逻辑的对象。使用业务对象,可以通过对象模型分离业务数据和逻辑。

请参考此处


1
谢谢!一个应用服务.. 很容易。我认为在线上没有多少详细解释这个DAO模式给普通人的资源。 - Rollerball
链接失效了。:( - wviana

5

DAO是以存储无关的方式获取业务对象的组件。例如,您可以创建一个DAO来访问客户信息。

public interface CustomerDAO {
    public Customer getCustomerById(Integer id)

}

然后在jdbc中实现数据访问。

public class JdbcCustomerDao {

    public Customer getCustomerById(Integer id){
        DataSource dataSource ...;

         Connection con = dataSource.getConnection(...);
    }
}

或者实现访问 Web 服务或其他方式的 CustomerDao。 CustomerDao 的优点是客户端(使用 CustomerDao 的代码)独立于具体的存储技术。因此,应该设计不依赖存储的 DAO API。一个好的提示是 CustomerDAO 接口的导入语句。如果 CustomerDAO 的导入语句包含类似以下内容:

import javax.sql.***

你应该重新考虑你的API设计。 但要记住,你也可以使用字符串来引入API依赖。 例如:

public Customer findCustomer(String sqlWhereClause){
   ...
}

业务对象保存数据,是您应该放置领域逻辑的地方,如果您正在使用Rich Domain Model方法。

详情请参见具体例子说明为什么“贫血领域模型”被认为是一种反模式


0

此外 -

当您开始实现所有业务类时,我假设您已经掌握了一些DAO。

让我们举个例子,一个blogBO需要一个blogDAO从数据库中创建或检索现有的博客。

然而,博客包含其关联的评论集合。blogBO可能具有使用commentBO(使用commmentDAO)查看数据库并使用该DAO读取与该博客相关联的所有评论的功能getComments()。所有这些活动都属于您正在添加到blogBO的业务。

所有底层的DAO都应通过TO(传输对象或值对象)与业务层通信和返回数据。但是,您应该已经拥有每个DAO的关联值对象。


0

业务对象是一个完全的反模式,具有打破SOLID的意大利面代码。使用DDD,卢克。


0

我不是这方面的专家,但我认为我会给业务对象的通俗解释是:业务对象持有实例变量和属性,用于数据访问(例如数据库)和业务逻辑(例如处理实际操作的Java类)之间的通信。

业务对象通常自己不做任何事情。例如,电话可以是人与新闻门户网站之间的业务对象,电话本身不做任何事情,它只保存双方都需要的浏览器和互联网配置设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接