`
royzhou1985
  • 浏览: 254538 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
阅读更多
类设计结构图


异常的处理通过一个继承自RuntimeException的异常处理类捕获,然后在Service层可以捕获,这样有个好处,如果是Jdbc实现的Dao,可能会抛出SQLException这个异常,但是如果是Hibernate实现的Dao,因为不存在SQLException,所以如果更改实现的方法的话会导致service层捕获异常的时候需要做相应的修改..

使用下面方法,用一个继承自RuntimeException的类,从而可以只修改实现类
package com.royzhou.exception;

public class DaoException extends RuntimeException {

	private static final long serialVersionUID = 2102076276311052301L;

	public DaoException() {
	}

	public DaoException(String message) {
		super(message);
	}

	public DaoException(Throwable cause) {
		super(cause);
	}

	public DaoException(String message, Throwable cause) {
		super(message, cause);
	}

}

//添加用户的方法
public void addUser(User user) {
		Connection conn = null;
		PreparedStatement ps = null;
		String sql = "";
		try {
			sql = "insert into user values (null,?,?,?,null)";
			conn = DbUtils.getConnection();
			ps = conn.prepareStatement(sql);
			int i = 1;
			ps.setString(i++, user.getUserName());
			ps.setString(i++, user.getLoginId());
			ps.setString(i++, user.getPassword());
			ps.executeUpdate();
		} catch(Exception e) {
                           //抛出异常DaoException
			throw new DaoException(e.getMessage(),e);
		} finally {
			DbUtils.close(ps);
			DbUtils.close(conn);
		}
	}


dao的获取通过一个单例工厂获得,通过一个daoConfig.properties可配置各个dao实现类,使得配置更加灵活

package com.royzhou.factory;

import java.io.InputStream;
import java.util.Properties;

import com.royzhou.dao.UserDao;

public class DaoFactory {
	
	private UserDao userDao = null;
	
	Properties prop = null;
	
	private static DaoFactory daoFactory = new DaoFactory();
	
	private DaoFactory() {
		prop = new Properties();
		InputStream is = DaoFactory.class.getClassLoader().getResourceAsStream("daoconfig.properties");
		try {
			prop.load(is);
		} catch (Throwable e) {
			throw new ExceptionInInitializerError(e);
		}
	}
	
	public static DaoFactory getInstance() {
		return daoFactory;
	}
	
	public UserDao getUserDao() {
		String userDaoClass = prop.getProperty("userDao");
		try {
			userDao = (UserDao)Class.forName(userDaoClass).newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return userDao;
	}
}

  • 大小: 22 KB
  • 大小: 13.1 KB
分享到:
评论

相关推荐

    Jdbc深入分析

    DAO设计模式是一种软件设计模式,它为数据访问提供了一个清晰的抽象层,有助于分离业务逻辑和数据访问逻辑。 **6.3 DAO设计模式的实现** 实现DAO模式时,通常需要定义DAO接口和具体的实现类。接口定义了与数据库...

    利用freemarker根据数据库字段自动生成form表单代码

    本话题将详细探讨如何利用Freemarker模板引擎根据数据库字段自动生成form表单、DAO层和Service层的增删改查功能。 **1. Freemarker简介** Freemarker是一个开源的Java模板引擎,它允许开发者使用特定的模板语言...

    JAVA+SQL办公自动化系统(源代码+论文+外文翻译).rar

    6. **DAO(Data Access Object)设计模式**:DAO模式用于封装对数据库的操作,使得业务逻辑与数据访问层分离,提高代码的可重用性和可测试性。 7. **事务处理**:在多用户环境下,SQL事务处理确保数据的一致性和...

    ssh框架整合步骤

    通过快速搭建Web项目,结合Struts版本的Action&JSP,形成页面展示与控制逻辑的紧密联系,提升了用户体验和应用的响应速度。 #### 第二十四至二十五步:视图层配置与表单元素的添加 通过定义表单元素如name和...

    Mybatis入门案例IDEA最新版本

    - **业务层**:处理具体业务逻辑,实现业务需求。 - **持久层**:与数据库交互,实现数据的存储与检索。 4. **持久层技术比较**: - **JDBC**:Java Database Connectivity,用于连接各种数据库的Java API。 - ...

    EpidemicPrevention2_cy.rar

    5. 编写业务逻辑:根据需求设计数据库表,编写DAO接口及实现,实现Service层的业务逻辑。 6. 前端页面:利用HTML、CSS、JavaScript等技术,设计用户界面,与后端进行交互。 7. 测试调试:编写单元测试,确保每个功能...

    后台管理系统源码,基于ssm开发

    7. **优点与适用场景**:SSM框架结合了Spring的强大功能、Spring MVC的Web处理能力和MyBatis的灵活SQL,适用于需要复杂业务逻辑和大量数据库操作的后台管理系统。由于其松耦合和模块化的特性,便于团队协作和后期...

    空的spring+struts+hibernate

    Struts 2是其最新版本,通常与Spring结合使用,通过Spring插件进行依赖注入,提供更强大的控制流和异常处理。 Hibernate是一个持久化框架,专注于对象-关系映射(ORM)。它简化了数据库操作,使得Java对象可以直接...

    JavaWeb课程设计图书馆管理系统.docx

    JavaWeb课程设计图书馆管理系统是一个基于JavaWeb技术的实践项目,旨在巩固学生对JavaWeb相关技术的理解,同时引入设计模式的概念,提升系统设计的灵活性和可维护性。该项目的主要目标是实现一个功能齐全的图书管理...

    ssh的空框架示例含JAR包

    4. **DAO层**:Hibernate实现的数据访问接口及其实现,处理与数据库的交互。 5. **实体类**:与数据库表对应的Java对象,通常包含属性和getter/setter方法。 6. **JSP页面**:视图部分,展示数据并提供用户交互。 7....

    shoppingbook

    【压缩包子文件的文件名称列表】"ShoppingBook"通常包含项目的各个组成部分,如HTML、CSS、JavaScript文件,JSP文件,以及可能的数据访问层(DAO)、业务逻辑层(Service)和模型层(Model)的Java类文件。...

    实用J2EE设计模式编程指南

    《实用J2EE设计模式编程指南》是一本深入讲解如何在Java企业级环境中应用设计模式的书籍。在Java EE(以前称为J2EE)平台上,设计模式是开发可扩展、可维护和高效软件的关键工具。以下是一些核心知识点的详细说明: ...

    JavaWeb 完整的新闻项目

    6. **数据访问对象(DAO)**:DAO层是JavaWeb项目中的常见设计模式,它封装了数据库操作,使得业务逻辑层与数据层解耦。 7. **实体类(Entity)**:用于映射数据库表的Java类,通常包含与数据库字段对应的属性和...

    SpringBoot-2.0.3+mybatis环境搭建

    Spring Boot 是一个快速开发框架,它简化了基于Spring的应用程序创建过程,而MyBatis是一个轻量级的持久层框架,用于处理SQL数据库。将Spring Boot与MyBatis结合,可以构建高效、简洁的Web应用程序。下面将详细介绍...

    一个SSM框架的maven archetype

    在SSM中,Spring主要负责管理应用的bean,如数据库连接池、DAO、Service等,并通过AOP实现事务控制。 2. SpringMVC框架: SpringMVC是Spring框架的一部分,专门用于处理Web请求。它采用模型-视图-控制器(Model-...

    基于SSM的健康管理系统.zip

    MyBatis是一个持久层框架,它简化了JDBC代码,将SQL与Java代码分离,使得开发者可以更专注于SQL语句的编写。MyBatis支持动态SQL,提供了映射XML文件或注解方式来映射Java对象和数据库表字段。在本健康管理系统中,...

    邹波spring

    - **Spring DAO**:提供JDBC的抽象层,极大地简化了数据访问层的异常处理。 - **Spring ORM**:整合了多种ORM框架,如Hibernate、MyBatis等。 - **Spring Web**:提供了构建Web应用的功能。 ### 邹波老师的Spring...

    idea中创建ssm项目

    MyBatis则是一个持久层框架,它允许开发者使用SQL与Java代码进行无缝结合,消除了几乎所有的JDBC代码和手动设置参数,使开发者能够专注于编写SQL本身。MyBatis与Spring的整合使得事务管理变得更加简单。 在Idea中...

Global site tag (gtag.js) - Google Analytics