类设计结构图
异常的处理通过一个继承自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
分享到:
相关推荐
DAO设计模式是一种软件设计模式,它为数据访问提供了一个清晰的抽象层,有助于分离业务逻辑和数据访问逻辑。 **6.3 DAO设计模式的实现** 实现DAO模式时,通常需要定义DAO接口和具体的实现类。接口定义了与数据库...
本话题将详细探讨如何利用Freemarker模板引擎根据数据库字段自动生成form表单、DAO层和Service层的增删改查功能。 **1. Freemarker简介** Freemarker是一个开源的Java模板引擎,它允许开发者使用特定的模板语言...
6. **DAO(Data Access Object)设计模式**:DAO模式用于封装对数据库的操作,使得业务逻辑与数据访问层分离,提高代码的可重用性和可测试性。 7. **事务处理**:在多用户环境下,SQL事务处理确保数据的一致性和...
通过快速搭建Web项目,结合Struts版本的Action&JSP,形成页面展示与控制逻辑的紧密联系,提升了用户体验和应用的响应速度。 #### 第二十四至二十五步:视图层配置与表单元素的添加 通过定义表单元素如name和...
- **业务层**:处理具体业务逻辑,实现业务需求。 - **持久层**:与数据库交互,实现数据的存储与检索。 4. **持久层技术比较**: - **JDBC**:Java Database Connectivity,用于连接各种数据库的Java API。 - ...
5. 编写业务逻辑:根据需求设计数据库表,编写DAO接口及实现,实现Service层的业务逻辑。 6. 前端页面:利用HTML、CSS、JavaScript等技术,设计用户界面,与后端进行交互。 7. 测试调试:编写单元测试,确保每个功能...
7. **优点与适用场景**:SSM框架结合了Spring的强大功能、Spring MVC的Web处理能力和MyBatis的灵活SQL,适用于需要复杂业务逻辑和大量数据库操作的后台管理系统。由于其松耦合和模块化的特性,便于团队协作和后期...
Struts 2是其最新版本,通常与Spring结合使用,通过Spring插件进行依赖注入,提供更强大的控制流和异常处理。 Hibernate是一个持久化框架,专注于对象-关系映射(ORM)。它简化了数据库操作,使得Java对象可以直接...
JavaWeb课程设计图书馆管理系统是一个基于JavaWeb技术的实践项目,旨在巩固学生对JavaWeb相关技术的理解,同时引入设计模式的概念,提升系统设计的灵活性和可维护性。该项目的主要目标是实现一个功能齐全的图书管理...
4. **DAO层**:Hibernate实现的数据访问接口及其实现,处理与数据库的交互。 5. **实体类**:与数据库表对应的Java对象,通常包含属性和getter/setter方法。 6. **JSP页面**:视图部分,展示数据并提供用户交互。 7....
【压缩包子文件的文件名称列表】"ShoppingBook"通常包含项目的各个组成部分,如HTML、CSS、JavaScript文件,JSP文件,以及可能的数据访问层(DAO)、业务逻辑层(Service)和模型层(Model)的Java类文件。...
《实用J2EE设计模式编程指南》是一本深入讲解如何在Java企业级环境中应用设计模式的书籍。在Java EE(以前称为J2EE)平台上,设计模式是开发可扩展、可维护和高效软件的关键工具。以下是一些核心知识点的详细说明: ...
6. **数据访问对象(DAO)**:DAO层是JavaWeb项目中的常见设计模式,它封装了数据库操作,使得业务逻辑层与数据层解耦。 7. **实体类(Entity)**:用于映射数据库表的Java类,通常包含与数据库字段对应的属性和...
Spring Boot 是一个快速开发框架,它简化了基于Spring的应用程序创建过程,而MyBatis是一个轻量级的持久层框架,用于处理SQL数据库。将Spring Boot与MyBatis结合,可以构建高效、简洁的Web应用程序。下面将详细介绍...
在SSM中,Spring主要负责管理应用的bean,如数据库连接池、DAO、Service等,并通过AOP实现事务控制。 2. SpringMVC框架: SpringMVC是Spring框架的一部分,专门用于处理Web请求。它采用模型-视图-控制器(Model-...
MyBatis是一个持久层框架,它简化了JDBC代码,将SQL与Java代码分离,使得开发者可以更专注于SQL语句的编写。MyBatis支持动态SQL,提供了映射XML文件或注解方式来映射Java对象和数据库表字段。在本健康管理系统中,...
- **Spring DAO**:提供JDBC的抽象层,极大地简化了数据访问层的异常处理。 - **Spring ORM**:整合了多种ORM框架,如Hibernate、MyBatis等。 - **Spring Web**:提供了构建Web应用的功能。 ### 邹波老师的Spring...
MyBatis则是一个持久层框架,它允许开发者使用SQL与Java代码进行无缝结合,消除了几乎所有的JDBC代码和手动设置参数,使开发者能够专注于编写SQL本身。MyBatis与Spring的整合使得事务管理变得更加简单。 在Idea中...