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

时间:2013-06-09 10:06:52

标签: java java-ee design-patterns dao

直接来自this oracle有关J2EE DAO模式的文章:

一切都非常清楚,但商业对象“参与者”(他们称之为)。

在这里,我引用了一些我想要更多见解的内容(特别是对于现实生活中的一个例子(一个简单的例子))。

  

BusinessObject的

     

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

我正在尝试将此模式用作练习(作为OCPJP的学生,它需要了解DAO模式)。到目前为止,我有我的DataSource(mysql数据库),我的传输对象(JavaBean,名为Person)和我的DAO对象在数据库和JavaBean(Person)之间正确连接。

那又一个商业对象是什么?

提前致谢

4 个答案:

答案 0 :(得分:5)

  

业务对象是集中所有逻辑的对象   应用。使用Business Objects使用对象模型分离业务数据和逻辑。

SEE HERE

答案 1 :(得分:3)

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服务或whatelse的CustomerDao。 CustomerDao的优点是客户端(使用CustomerDao的代码) 独立于混凝土存储技术。这就是为什么你应该设计没有存储依赖性的DAO API。一个很好的提示是CustomerDAO接口的import语句。如果CustomerDAO导入语句包含以下内容:

import javax.sql.***

您应该重新考虑API的设计。 但请记住,您还可以使用字符串引入API依赖项。 E.g。

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

业务对象保存数据,因为它是您应该的位置 将域逻辑放在。如果您使用的是丰富的域模型方法。

有关详细信息,请参阅Concrete examples on why the 'Anemic Domain Model' is considered an anti-pattern

答案 2 :(得分:0)

我不是这方面的专家, 但我认为外行人给业务对象的解释是这样的:业务对象包含数据访问(例如数据库)和业务逻辑(例如,处理实际操作的Java类)所需的实例变量和属性进行通信。

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

答案 3 :(得分:0)

此外-

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

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

但是,博客包含与之相关的评论集。 blogBO可能具有getComments()函数,该函数使用commentBO(使用commmentDAO)查找数据库,并使用该DAO读取与该博客关联的所有注释。所有这些活动都属于您要在blogBO中添加的业务。

所有基础DAO都应进行通信,并通过TO(传输对象或价值对象)将数据返回到业务层。但是,每个DAO都应该已经有一个关联价值对象。