【问题标题】:DAO pattern in java what is a Business ObjectJava中的DAO模式什么是业务对象
【发布时间】:2013-06-05 04:51:05
【问题描述】:

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

除了业务对象“参与者”(正如他们所说的那样)之外,一切都非常清楚。

在这里我引用了我想要更多见解的一点(尤其是一个现实生活中的例子(一个简单的例子)很有用)。

业务对象

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

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

那么,业务对象到底是什么?

提前致谢

【问题讨论】:

    标签: java jakarta-ee design-patterns dao


    【解决方案1】:

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

    SEE HERE

    【讨论】:

    • 谢谢!应用程序服务.. 简单。我认为网上没有太多资源可以为外行详细解释这种 DAO 模式。
    • 链接断开。 :(
    【解决方案2】:

    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 的代码) 独立于concreate存储技术。这就是为什么你应该在没有存储依赖的情况下设计 DAO API。一个很好的提示是 CustomerDAO 接口的导入语句。如果 CustomerDAO 导入语句包含以下内容:

    import javax.sql.***
    

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

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

    业务对象保存数据,它是您应该存放的地方 把领域逻辑放在。如果您使用的是富域模型方法。

    详情见Concrete examples on why the 'Anemic Domain Model' is considered an anti-pattern

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        另外——

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

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

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

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

        【讨论】:

          猜你喜欢
          • 2015-03-22
          • 2011-03-17
          • 1970-01-01
          • 2015-06-13
          • 2011-09-18
          • 1970-01-01
          • 2012-07-26
          • 1970-01-01
          • 2017-02-26
          相关资源
          最近更新 更多