`
bryanzk
  • 浏览: 57407 次
文章分类
社区版块
存档分类
最新评论

关于service层、dao层,以及O/R Mapping之间的思考

阅读更多
            部门最近正式进入oo的开发,采用了类似于petshop4的层次结构,简单来说,service层调用dao(当然是用配置文件+反射的方式),dao通过ibatis.net完成从数据库中的table到domain对象的映射。这样做的目的,当然是希望能够让各个层次各司其职,减少层次之间的耦合,结构分明。同时,结合tdd以及mock,完成各个层次之间的并行开发。
            不过这几天的开发,给我带来一些疑惑。用过ibatis.net的兄弟们都知道,兄弟们需要自己动手写映射文件,写sql来完成mapping的过程。mapping不用多说,就是这个sql,让我觉得有点迷茫。
            比如一个最普通的取得列表的方法getlist,通常这种列表方法都是要带着查询参数的。那么这些查询的条件应该在哪个层次中处理? dao么?service层?现在我们的处理方式是在ibatis.net的mapping的配置文件中写sql来完成查询,dao接口中定义方法签名,然后在dao实现中组织查询条件,service层调用dao层的getlist方法。针对这种方式,我的问题是:
    1、按照我的理解,查询条件应该算是业务逻辑的一个组成部分,那么把查询条件放到sql里面处理,是不是违背了各个层次之间的职责分配?如果真的把筛选数据的过程放到service处理,那么对于大数据量的情况,效率问题如何解决?在这个问题上,没记错的话,nhibernate是通过hsql来处理的。那么nhibernate对缓存是怎么处理的?
    2、按照我们的方式,如果结合tdd,service层实际上就不包含任何逻辑,对service的测试就不存在太大意义了。

    除了上面的问题之外,为了测试dao层,我们试图用事务来控制对dao的测试,但是在分布式事务的处理上面总是有问题,这个应该怎么设置?


bryanzk 2007-04-21 00:40 发表评论
分享到:
评论

相关推荐

    Macrobject NObject O/R Mapping 框架

    NObject O/R Mapping 框架包含了 OQL.NET,一套基于 C# 和 VB.NET 等原生 .NET 语言的强类型对象查询语言 (OQL, Object Query Language) 使您甚至不需要写一行 SQL 语句。 ??NObject O/R Mapping 框架能帮您减少 30...

    hibernate如何用O/R Mapping框架来实现我们的数据层

    ### Hibernate与O/R Mapping框架详解 #### 一、O/R Mapping概述 O/R Mapping(Object-Relational Mapping)即对象关系映射,是一种程序技术,用于将对象模型表示的应用程序对象与关系数据库中的表进行相互转换。在...

    O/R_Mapping思想

    O/R_Mapping思想与ADO.NET 基于.NET的Web应用框架的设计与实现 将对象映射到关系数据库——对象/关系映射(O/R_Mapping)详解 面向对象设计中的O/R映射架构

    泛型、反射 实现 O/R mapping 示例

    在Java编程语言中,O/R Mapping(对象关系映射)是一种技术,用于将数据库中的关系数据映射到对象模型上,使得开发人员可以更方便地处理数据,而无需直接操作SQL语句。在这个示例中,我们将探讨如何利用泛型和反射来...

    Hibernate O/R Mapping 入门工程包

    总结来说,这个"Hibernate O/R Mapping 入门工程包"提供了从XML到Annotation的映射示例,以及简单的数据库操作实例,是学习和理解Hibernate ORM机制的良好起点。通过深入学习和实践,开发者可以更高效地在Java应用中...

    MJDU v6.0 及使用教程(注解+反射+XML+O/R Mapping+R/O Mapping)

    只需服务层调用即可! ------ 分割线 ------ 我才发现原来在 2013 年时上传的 0.04 版本是不带 OR/RO Mapping 机制的。。。 想了想,还是补上 v6 这个带 OR/RO Mapping 机制的版本吧,虽然是同一时期的产物...

    Service层和DAO层解析

    Service层和DAO层是软件开发中常见的两种设计模式,主要用于分离业务逻辑和数据访问操作。在Java Web开发中,它们通常被应用于三层架构或MVC(Model-View-Controller)模型中。 DAO(Data Access Object)层是负责...

    Tornado O/R Mapping Engine-开源

    **Tornado O/R Mapping Engine 开源详解** Tornado O/R Mapping Engine,简称为Tornado/DB,是一款基于Java平台的对象关系映射(Object-Relational Mapping,ORM)工具。ORM技术的主要目标是通过将数据库中的数据与...

    jsp、servlet进行增删改查,dao层和service层分开

    4. **Service层**:Service层是业务逻辑层,它封装了具体的业务规则和流程,是DAO层和Servlet之间的桥梁。Service层会调用DAO层的方法来执行数据库操作,并处理可能出现的异常。例如,当用户请求删除一个记录时,...

    Spring Boot Mybatis 自动生成Entity,controller、serviceImpl ,Dao,方便开发,无需手写

    Dao(Data Access Object)层负责与数据库的交互,自动生成的Dao通常包含了一些基本的SQL查询方法,如根据ID获取、添加、更新和删除记录。 8. **项目结构**: 压缩包文件"spring-boot-api-project-seed-master"很...

    o-x-mapping测试

    "o-x-mapping"通常指的是对象到XML的映射,它允许我们将Java对象转换为XML文档,或者从XML文档中反向创建Java对象。这种映射机制是许多框架和库的核心功能,如JAXB(Java Architecture for XML Binding)和XStream等...

    快速生成dao、service、controller等相关代码

    这个过程通常涉及编写DAO(Data Access Object)、Service和Controller层的代码,这些是软件架构中的核心组件。"快速生成DAO、Service、Controller等相关代码"的标题和描述暗示了一个针对这种情况的解决方案,即一个...

    一個好好的 hibernate 介紹

    1. 对象/关系映射 (O/R Mapping) 2. Hibernate 3. Hibernate同步器 (Synchronizer) 4. 示例与实践 #### O/R Mapping(对象/关系映射) - **定义**:对象/关系映射是一种编程技术,用于将对象模型中的数据自动转换...

    hibernat培训.ppt

    **一、持久化层——O/R Mapping** 在基于B/S的三层架构中,业务逻辑层和持久化层不应依赖于展现层。O/R Mapping是解决对象与关系数据库之间匹配问题的关键技术。例如,Java类`User`与数据库表`tbl_user`的映射,...

    mybatis generator 自动生成 dao mapping object

    mybatis generator 自动生成 dao mapping object ------------------------------ http://knight-black-bob.iteye.com/blog/2360841

    springMVC基本配置(Controller+Service+Dao)

    在本文中,我们将深入探讨如何配置SpringMVC项目,包括控制层、业务逻辑层和持久层的设置。 首先,让我们从创建一个基本的SpringMVC项目结构开始。通常,一个SpringMVC项目会包含以下几个主要部分:`src/main/java`...

    DWR+JPA DWR直接访问SERVICE层,并直接处理DAO返回的BEAN.doc

    在本文中,我们将深入探讨如何使用DWR与JPA结合,直接访问SERVICE层并处理DAO返回的BEAN,以及在这样做时需要注意的关键点。 首先,当我们在SERVICE层定义了MANAGER方法后,这些方法通常封装了业务逻辑。通过DWR,...

    crm项目jsp+servlet+service+dao

    在CRM项目中,JSP作为View层负责显示数据,Servlet作为Controller层处理请求和转发,而Service和DAO层则构成了Model层,处理业务逻辑和数据存储。 6. 数据库设计:CRM系统通常涉及到客户信息、销售数据、订单记录等...

    javaSE-day11-day12--主要实现了购物系统的dao层和service层

    在给定的标题“javaSE-day11-day12--主要实现了购物系统的dao层和service层”中,我们可以看到开发者在这两天的学习中重点集中在了系统的核心部分——数据访问对象(DAO)层和服务(Service)层的实现。 **数据访问...

Global site tag (gtag.js) - Google Analytics