`

事务是在DAO还是在Service

阅读更多
       今天下午和新来的同事聊起技术研究来了,大家都有一个共同点,就是从项目的需要出发,解决最根本,最本质的问题是我们技术研究的目标。

       期间,我们谈到项目中的异常处理框架的问题;谈到事务处理的问题;谈到引入AOP解决很多需要改代码才能加功能的问题;最后谈到领域建模的问题。

        我觉得通过这样的交流是比较有好处的,自己也得到了提高,至少对事务在哪里处理这一点上。我认识到之前我的程序的设计不正确,应该把事务放在Service方,而不应该方在DAO那边。DAO的方法应该是尽可能的简单,而业务逻辑的方法会比较负责,业务逻辑的方法可能会调用多个DAO完成一个业务操作,并且对于用户来说,一个业务方法才是一个原子操作。所以,在DAO方法里面加上事务只能保证你这个DAO操作是原子的,但是不能保证Service方法是原子的。
      
       将事务切换到Service方法中,需要做一些操作。典型的有Spring AOP,当然,也可以采用filter,也可以采用ASPECTJ,各种方法都能够达到自己的目标:)
       剩下的是我们如何去权衡了。

       另外,关于领域建模的问题,我还是不得不说,我们的系统建立领域模型是有必要的。代码量已经超过600KLOC了,不提炼领域模型,这个系统的业务可重用性基本就为0。

       有很多可以做的东西,希望技术研究的方向能够朝这些方面发展。
分享到:
评论

相关推荐

    自动生成dao,service

    标题 "自动生成DAO和服务层代码" 指的是在软件开发过程中使用自动化工具来快速创建数据访问对象(DAO)和业务服务层(Service)的代码。这种做法可以显著提高开发效率,减少手动编写重复代码的时间,使开发者能够更...

    使用代理实现Hibernate Dao层自动事务

    5. 在业务层调用Dao的代理对象:在Service层或Controller层,注入Dao的代理对象,通过代理对象调用Dao的方法,Spring会自动处理事务的生命周期。 通过这样的方式,我们能够实现Hibernate Dao层的自动事务管理,让...

    hibernate4 通用dao,service

    而Service层则在此基础上进行业务逻辑处理,调用DAO方法来执行数据库操作,并可能包含事务管理、异常处理等高级功能。 描述中的链接指向了一个博客文章,虽然没有提供具体内容,但根据标题可以推测,这篇文章可能...

    网上书店基于dao service sevlet

    在IT领域,构建一个网上书店涉及到许多核心技术,其中DAO(Data Access Object)、Service以及Servlet是常见的关键组件。这个“网上书店”项目显然是一个教学实例,旨在帮助初学者理解这些技术的集成与应用。 1. ...

    java代码生成器(dao层service层)

    Service层则是业务逻辑处理的中心,它调用DAO层的方法来实现对数据的操作,并且可能涉及到事务管理、异常处理、缓存等高级功能。服务层代码生成通常包括服务接口和服务实现类,服务接口定义了对外提供的业务方法,...

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

    在Java Web开发中,"jsp、servlet进行增删改查,dao层和service层分开"是一种常见的设计模式,它遵循了MVC(Model-View-Controller)架构,旨在提高代码的可维护性和可扩展性。以下是这个模式的详细解释: 1. **...

    Spring配置事务在DAO层和业务逻辑层

    ### Spring配置事务在DAO层和业务逻辑层 #### 一、Spring事务管理概述 Spring框架提供了两种事务管理方式:编程式事务管理和声明式事务管理。其中,声明式事务管理是通过配置来完成的,它利用Spring AOP特性,将...

    DAO设计模式DAO设计模式

    ### DAO设计模式详解 ...无论是采用DAO级别的事务管理还是服务层级别的事务管理,都需要根据实际应用场景来选择合适的策略。此外,使用JDBC进行事务划分是一种简单而有效的方式,尤其适合于小型或中型的应用程序。

    新闻发布系统设计思路(Dao与service)

    当多个Dao操作需要在同一个事务中完成时,Service层会进行事务的开启、提交或回滚。此外,Service层还可能涉及缓存策略,如利用Redis缓存热门文章,减少数据库压力。 为了提高代码的可测试性和可维护性,Dao与...

    action层,dao层 ,service层,entity层1

    在Java中,这些类通常被标记为`@Entity`,并使用JPA或Hibernate等ORM框架进行映射,以便于在Service层与DAO层之间传输和持久化数据。 5. **Util层(工具层)**: 这一层包含了一些通用的工具类和静态方法,比如...

    spring配置在DAO和事务层(DOC)

    ### Spring配置在DAO和事务层知识点详解 #### 一、Spring框架中的事务管理机制 Spring 框架提供了强大的事务管理功能,支持多种事务管理方式,包括编程式事务管理和声明式事务管理。其中,声明式事务管理是通过...

    ssh.rar_Action!_service dao_ssh action_ssh com.dao_ssh dao

    在“service_dao”标签中,Service层是业务逻辑的封装,负责处理复杂的业务规则和事务管理。它通常调用DAO层来与数据库交互。DAO接口定义了数据库操作,而其实现类则使用Hibernate等ORM(对象关系映射)工具来完成...

    java 自动生成代码 entity,dao,service

    在Java开发过程中,我们经常会遇到编写相似的代码段,如Entity、DAO(Data Access Object)和Service层。这些层在业务逻辑中起到了重要的作用,但它们的创建往往具有很高的重复性,大大降低了开发效率。为了解决这个...

    逆向工程自动生成mapper dao service

    在Mybatis框架中,逆向工程可以帮助开发者快速生成数据库操作相关的Mapper、DAO和服务层代码,极大地提高了开发效率。 Mybatis逆向工程工具是Mybatis框架的一部分,它能够根据数据库表结构自动生成对应的Java实体类...

    小型web程序实例DAO

    DAO操作通常涉及数据库事务,尤其是在涉及多条记录更改时。Service层需要管理这些事务,确保数据的一致性。例如,使用Spring框架,可以通过@Transactional注解声明式地管理事务。 4. **异常处理**: DAO操作可能...

    DAO开发模式介绍.......

    在实际应用中,DAO模式可以与Service层配合,Service层调用DAO来执行数据操作,并处理业务逻辑。此外,现代的框架如Spring提供了对DAO的支持,通过依赖注入(DI)和面向切面编程(AOP),可以更方便地管理事务和...

    Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合

    - **Spring**:用于Service层和DAO层,提供依赖管理和事务管理等功能。 - **Hibernate**:用于DAO层,负责对象关系映射(ORM),使得Java对象能够与数据库表相对应。 3. **配置文件**:配置文件是Spring框架中的...

    03---Controller-Service-Dao.zip

    在Spring框架中,Service层通常使用`@Service`注解,并且可以利用`@Transactional`来管理事务。Service层还可能包含复杂的业务规则和逻辑判断,以满足应用的需求。 3. **Dao层(Data Access Object)**: Dao层是...

Global site tag (gtag.js) - Google Analytics