JDBC访问数据库操作详解(四)之三层架构:以MySQL为例
1. 三层架构简介
三层架构是一种程序设计结构,使用分层式结构将整个应用拆分为三层
-
表示层
-
业务逻辑层
-
数据访问层
分层的目的:实现高内聚、低耦合
-
每一层分工明确,相互独立,任意一层发生修改都不影响其他层
-
每一层中都不应该出现其它层的技术
2. 三层
2.1 表示层
表示层,也称为显示层(View)
- 用于实现系统和用户进行数据交互
向用户展示数据,如控制台、网页、导出文件等
接收用户输入的数据,如Scanner、网页、导入文件等
- 类的命名:一般使用XxxView,Xxx一般表示业务模块
2.2 业务逻辑层
业务逻辑层,也称为业务层(Service)
-
用于实现具体的业务逻辑功能
-
类和接口的命名:一般使用XxxService(接口)、XxxServiceImpl(实现类)
-
方法的命名:add、remove、modify、find、findAll、findById…
使用具体业务名,如register、login、submit、apply、transfer…
2.3 数据访问层
数据访问层,也称为持久层(DAO:Data Access Object数据访问对象)
- 用于实现对数据的访问操作,即数据的持久化操作
- 类和接口的命名:XxxDao(接口)、XxxDaoImpl(实现类)
- 方法的命名:insert、delete、update、select、selectAll、selectById…
3. 应用:改写学生管理系统
技术要点
-
面向接口编程:使用接口解耦合,分离(接口中方法的)调用者和实现者
-
使用工厂+接口进行对象的创建,降低层与层之间的耦合度,实现解耦合——>高低原则
-
异常:每一层都需要对该层的异常进行捕获和转换
-
Dao层:捕获SQLException——>抛自定义异常DataAccessException extends RuntimeException
-
Service层:
-
捕获DataAccessException——>抛自定义异常ServiceException extends RuntimeException
-
对于业务相关的异常——>抛自定义异常,继承自Exception,如StudentNotFoundException extends Exception
-
-
-
事务:
- 增、删、改操作必须加事务,查询操作可以不加,但建议所有数据库操作都加事务
- 事务加在Service层,即在Service层实现事务操作,可以通过代理添加事务功能
- 需要对事务代码进行封装,使用事务管理器类
- 使用ThreadLocal管理Connection,实现线程单例
项目结构
- 结构层次
项目
—JRE System Library //JRE环境
—References Libraries //项目中引用的jar
—lib //用于存放jar包
—src //源代码
—域名反向.项目名
—entity //实体类
—dao //数据访问层的接口
—impl //数据访问层的实现类
—service //业务逻辑层的接口
—impl //业务逻辑层的实现类
—proxy //业务逻辑层的代理类
—view //表示层的类
—util //工具
—mapper //行映射的实现类
—factory //工厂
—exception //异常
—transaction //事务
—impl //事务的实现类
—constant //常量
—vo //值对象
—datasource.properties //数据库配置文件
—objs.properties //工厂的配置文件
源代码会上传到csdn上,感兴趣的朋友可以去下面的链接下载:
下载链接:https://download.csdn.net/download/zdfsb/12660872
4. 封装jar包
将自己写的工具类打包jar包,供他人使用,如实现jdbc操作的代码
步骤:
1. 新建一个Java项目,将相关代码拷贝/写到该项目中
2. 右击项目——>Export——>JAR file
注:1.导出的时候只需导出字节码文件,如果一定要导出源代码,分开导出,避免jar包文件过大
2.只导出src文件,不要把jar文件也导出