`

DAO层的异常处理

阅读更多

DAO层的异常最好是让上一层知道,这样就可以使上一层知道出错是否还进行下一步操作.

首先看看我们的项目的架构:

Com.mengya.dao.innter接口层(只定义方法):

       public void addUser(User user);

    public User getUser(int userId);

    public User findUser(String loginName, String password);

    public void update(User user);

    public void delete(User user);

com.mengya.dao.imple DAO的实现

    public class UserDaoJdbcImpl implements UserDao {

    public void addUser(User user) {

       Connection conn = null;

       PreparedStatement ps = null;

       ResultSet rs = null;

       try {

           conn = JdbcUtils.getConnection();

           String sql = "insert into user(name,birthday, money) values (?,?,?) ";

           ps = conn.prepareStatement(sql);

           ps.setString(1, user.getName());

           ps.setDate(2, new java.sql.Date(user.getBirthday().getTime()));

           ps.setFloat(3, user.getMoney());

           ps.executeUpdate();

 

           rs = ps.getGeneratedKeys();

           if (rs.next())

              user.setId(rs.getInt(1));

       } catch (SQLException e) {

           throw new DaoException(e.getMessage(), e);

           //1,如果这里我们打印异常信息,那么上一层即业务逻辑层就不知道,

可能以为正常执行了.它可能会按照正确执行再执行下一步的操作.

               2,如果这里我们简单的throw e.那么我们的这个方法就要改成:

               public class UserDaoJdbcImpl implements UserDao throws

Exceiotn{},这也会导到我们的接口里的方法也要改成方法后面throw

SQLException如果我们的接口的实现也是SQL实现了,并且这里是

CheckException,在我们的业务逻辑层调用时也要用try...catch.

样的话就改动很大.

              所以在这里我们就要用RunctimeException了。上面的问题都可以解决。

                 第一,     如果有异常上层即业务逻辑层肯定知道.因为这样的话程序出错了.

                 第二,     不用修改我们定义好了的接口,RunctimeException可以try...catch也可以不.

                 第三,     在我们业务逻辑层调用的时候也不需要非要try...catch也可以选择不try...catch.

       } finally {

           JdbcUtils.free(rs, ps, conn);

       }

    }

    //其它方法就不写了...

}

自己定义的异常类,继承于RuntimeExceptin.也没有重写RuntimeException里面的方法,只是简单的一个继承而已.

public class DaoException extends RuntimeException {

    private static final long serialVersionUID = 1L;

    public DaoException() {

    }

    public DaoException(String message) {

       super(message);

    }

    public DaoException(Throwable cause) {

       super(cause);

    }

    public DaoException(String message, Throwable cause) {

       super(message, cause);

    }

}

分享到:
评论

相关推荐

    JDBC_DAO设计思想与搭建骨架, 结合Service层讲解DAO层的异常处理

    本篇文章将深入探讨JDBC DAO的设计思想,以及如何结合Service层来构建一个完整的异常处理机制。 首先,理解JDBC DAO的基本概念。DAO模式的主要目标是提供一个接口,使得业务层可以与具体的数据库操作分离。这样,...

    Service层和DAO层解析

    在简单的情况下,Service层可能直接调用DAO层的方法,但其主要目的是提供更高层次的抽象,处理业务规则,进行异常处理,并与其他服务或系统进行交互。 在分层架构中,Service层和DAO层的解耦是非常重要的。Spring...

    J2EE项目中统一异常处理源码

    3. DAO层异常原因返回:在数据访问层,常见的异常有SQL查询错误、数据不存在、事务异常等。通过统一异常处理,可以将这些异常转换为自定义的异常,并附带具体的错误信息,如SQL错误码、影响行数等,这样可以清晰地...

    图书管理系统DAO层代码

    6. **异常处理**:为了保证程序的健壮性,DAO层通常会捕获并处理可能抛出的SQLException或其他异常,转换为业务层可以处理的异常类型。 在"myLibrarySys"这个压缩包中,我们可以期待找到上述提到的源代码文件,包括...

    项目model、Dao层、业务层建模工具类

    5. 异常处理:进行异常捕获和处理,确保数据库操作的健壮性。 然后,"业务层"通常指的是服务层(Service Layer),这是应用程序的核心部分,实现了具体的业务逻辑。在这个层面上,建模工具类可能涉及到服务的注册、...

    web应用dao层的开发经验小结

    DAO层的主要任务是提供对数据库的操作接口,包括增删查改等基本操作,同时处理SQL语句的编写、事务管理以及异常处理。通过这种方式,业务层可以专注于业务逻辑,而无需关心底层数据访问的实现。 2. 设计模式 DAO...

    mvc中dao层反射实现

    在本主题“mvc中dao层反射实现”中,我们将探讨如何利用Java的反射机制来实现DAO层的方法。 反射是Java语言的一个强大特性,它允许程序在运行时动态地获取类的信息并调用其方法。在DAO层中使用反射,可以提高代码的...

    Hibernate封装dao层

    7. **异常处理**: 在DAO层捕获和处理Hibernate抛出的异常,如`HibernateException`,并根据业务需求决定是否向上层抛出或转换为自定义异常。 8. **单元测试**: 对DAO层进行充分的单元测试,验证其功能的正确性...

    dbutils +dbcp 连接池构建dao层

    在IT行业中,数据库连接管理是应用系统中至关重要的一环,特别是在高并发环境下,有效地管理和复用数据库连接可以显著...在实际项目中,还需要注意异常处理、事务管理和资源释放等问题,以确保系统的稳定性和安全性。

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

    Service层会调用DAO层的方法来执行数据库操作,并处理可能出现的异常。例如,当用户请求删除一个记录时,Service层会调用DAO的delete方法,并处理可能出现的数据一致性问题。 5. **Oracle数据库**:Oracle是一种高...

    用java的面向对象语言来操作关系型数据库 dao层.zip

    5. **异常处理**:在DAO层中,需要妥善处理可能抛出的SQLException和其他运行时异常,确保程序的健壮性。通常会封装成自定义的业务异常,方便上层业务逻辑捕获并处理。 6. **事务管理**:对于涉及多条数据库操作的...

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

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

    java_开发Dao层的经典实现

    ### Java开发DAO层的经典实现详解 #### 一、引言 在Java开发中,DAO(Data Access Object)层是用于处理数据库操作的关键组件之一。它主要负责与数据库进行交互,执行增删改查等基本操作,并将数据封装为实体对象...

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

    本文将深入探讨如何使用代理来实现Hibernate Dao层的自动事务管理,以提高代码的可维护性和事务处理的效率。 首先,理解Dao(Data Access Object)层的作用至关重要。Dao层是应用与数据库之间的一层抽象,它封装了...

    dao层增删改查分页查找

    - 考虑异常处理,确保程序在遇到错误时能正确回滚事务并给出反馈。 总的来说,DAO层的增删改查和分页查找是Java企业级应用开发的基础,理解并熟练掌握这些操作对于提高应用程序的性能和稳定性至关重要。通过合理的...

    Java异常介绍及Spring Boot统一异常处理

    Spring Boot 提供了统一的异常处理机制,通过使用 @ControllerAdvice 和 @ExceptionHandler 注解,可以实现对控制器层、Service 层、Dao 层以及 Spring 系统内定义的部分异常的统一处理。 在 Spring Boot 中,可以...

    JSP+DAOD的设计模式,完全体现了业务层与数据层,显示层的关系

    DAO对象封装了SQL语句,处理事务,异常处理等细节,为业务层提供一个干净、简单的API。 **文件Demo** 在给定的压缩包文件"Demo"中,可能包含了实现上述设计模式的相关代码。通常,"Demo"可能包含以下部分: - JSP...

    Spring3 JDBC 通用DAO封装2 dao层终于完成dao层大概上传完整代码

    这些工具类提供了异常处理和事务管理,使得数据库操作更加安全和可靠。 2. **通用DAO设计** DAO(Data Access Object)模式是一种常见的设计模式,用于隔离业务逻辑层与数据访问层。在Spring3中,我们可以通过接口...

    DAO模式实现增加删除修改操作

    5. **异常处理** DAO层应捕获并处理可能抛出的数据库相关异常,如`SQLException`,然后将其转换为业务层能理解的异常,如自定义的`DataAccessException`。 6. **查询优化** 对于复杂的查询,DAO层可以利用预编译...

    java代码 根据domain自动生成DAO层 小tool(功能有待又垒加)

    6. **版本控制**:生成的代码应遵循良好的编程实践,如适当的注释、错误处理和异常处理。同时,考虑到代码版本控制,生成的代码应当易于理解和维护。 为了更深入地利用这个工具,开发者需要了解如何配置数据库连接...

Global site tag (gtag.js) - Google Analytics