JAVA / MySql 编程——第八章 DAO 模式
1、 数据持久化:将程序中的数据在瞬时状态和持久状态间转换的机制即为数据持久化;
2、 持久化的实现方式:数据库、普通文件、XML文件;
3、 JDBC封装:采用面向接口编程,可以降低代码间的耦合性;
|
为了提高代码的维护性和扩展性,我们使用JDBC进行封装数据,: 先定义统一的API,将操作数据的代码抽象到接口中,业务逻辑代码只需要调用这些接口的实现类的对象,就可以实现对数据的访问了, 从而隔离实现的细节,采用面向接口编程,可以降低代码间的耦合度,提高代码的扩展性和维护性。 |
|
优点:
●隔离不同数据库的实现 |
|
●进行封装的原因:业务代码和数据访问代码耦合:可读性差、不利于后期修改和维护、不利于代码复用; |
4、DAO:作用:DAO起着转换器的作用,把实体类转换为数据库中的记录;
|
DAO模式总结: DAO(data access Objects) 数据存取对象,位于业务逻辑和持久化之间,实现对持久化数据的访问, 通俗的讲,就是将数据操作封装起来,对外提供相应的接口 |
|
|
在面向对象设计过程中,有一些套路用户解决问题,称为模式, DAO模式提供了访问关系型数据系统所需操作的接口,将数据访问和业务逻辑分开,对上层提供面向对象的数据访问接口, |
|
|
从DAO模式可以看出,它实现了两层分离。 ●隔离了数据访问代码和业务逻辑代码,业务逻辑代码直接调用DAO方法即可,完全感觉不到数据表的存在,分工明确,数据访问层代码不影响业务逻辑层代码,这也符合单一职能原则,降低了耦合度,提高了代码的可复用性。。 ●隔离了不同的数据库的实现,采用面向接口编程,如果底层数据变化了,如mysql变成了oracle。中需要增加DAO接口的实现类即可,原来的Mysql实现类不用修改,这符合开闭原则,降低耦合性,提高扩展性和移植性 |
|
|
一个典型的DAO模式主要由以下几部分组成。 DAO接口:把对数据库的所有操作定义为抽象方法,放在接口里面,可以提供多种实现 DAO实现类:针对不同的数据库给出不同的DAO接口定义的方法的实现(不同的实现类) 实体类:用于存放传送的对象数据,就直接传递对象就行了,不用传递很多参数 数据库连接关闭工具类:还有一些比如增,删,改的复用代码可以提取到公共类中,还有关闭和连接数据库,避免代码冗余。。。 |
|
|
非常流行的数据访问模式——DAO模式 Data Access Object(数据存取对象) 位于业务逻辑和持久化数据之间 实现对持久化数据的访问 |
DAO模式的组成部分 DAO接口 DAO实现类 实体类 数据库连接和关闭工具类 |
4、 properties配置文件:让用户脱离程序本身修改相关的变量设置——使用配置文件;
|
Prpoerties类:可以读取java配置文件的类,我们把常用的配置信息写在配置文件中,方便维护,读取。 |
|
Properties配置文件:Java配置文件一般是properties结尾的。格式是键=值对的,可以用#来注释, |
|
添加Properties配置文件步骤:SRC文件夹右键-----NEW -----File-----输出properties结尾的配置文件。 在文件中添加配置信息: Driver=com.mysql.jdbc.Driver //添加加载驱动的字符串 Url=jdbc:mysql://localhost:3306/epet //添加链接的字符串,localhost也可以为IP地址,3306为端口号,epet是数据库名称 Username=epetAdmin //数据库用户名 Password=root //数据库用户密码 |
|
n Java中的配置文件常为properties文件 u 后缀为.properties u 格式是“键=值”格式 u 使用“#”来注释 |
●Java中提供了Properties类来读取配置文件:
|
方法名 |
说 |
|
String |
用指定的键在此属性列表中搜索属性。通过参数key得到其所对应的值 |
|
Object |
调用Hashtable的方法put。通过调用基类的put()方法来设置键-值对 |
|
void |
从输入流中读取属性列表 (键和元素对)。通过对指定文件进行装载获取该文件中所有键-值对 |
|
void clear() |
清除所装载的键-值对,该方法由基类Hashtable提供 |
6、使用实体类传递数据:数据访问代码和业务逻辑代码之间通过实体类类传输数据,把相关的信息封装到实体类中,程序把实体类作为方法的参数来传递。
|
实体类的特征 ★实体类一般属性使用private修饰 ★根据业务需求和封装性要求对实体类进行getter/setter方法,负责属性的读取和赋值,一般使用public修饰 ★对实体类提供无参的构造函数,根据业务需求提供有参数的构造方法。 ★实体类最好实现java.io.Serializable接口,支持序列化机制,可以将改对象转化为字节序列化而保存到磁盘(硬盘)或者网络上传输。 ★如果实体类实现了serializable接口。就应该定义属性serialVersionUID,解决不同版本的序列化问题。。。 |
JAVA / MySql 编程——第八章 DAO 模式的更多相关文章
- Java实验项目六——使用DAO模式实现对职工表的操作
Program: 利用JDBC访问职工信息表,实现对职工信息的添加.更新.删除.按照职工号查找.查找全部职工的功能. Description:在这里我采用了DAO设计模式完成对职工表的操作,下面介绍一 ...
- Java笔记——面向接口编程(DAO模式)
1.DAO模式 DAO(Data Access Object)模式就是写一个类,把访问数据库的代码封装起来.DAO在数据库与业务逻辑(Service)之间. l 实体域,即操作的对象,例如 ...
- JAVA / MySql 编程——第七章 JDBC
1.JDBC:JDBA是Java数据库连接(Java DataBase Connectivity)技术的简称,提供连接各种常用数据库的能力: ●Java是通过JDBC技术实现对各种数据 ...
- JAVA / MySql 编程——第二章 初始MySQL
1. MySQL: ● MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL最流行的关系型数据库管理系统, ...
- JAVA / MySql 编程——第五章 事务、视图、索引、备份和恢复
1.事务(Transaction): 事务是将一系列数据操作绑成一个整体进行统一管理. 如果一事务执行成功,则咋子该事务中进行的所有数据更改均会提交,称为数据库中的永久成部分. 如果事务执行是遇到错误 ...
- JAVA / MySql 编程—— 第三章 高级查询(一)
1. 修改表: (1)修改表名语法: ALTER TABLE <旧表名> RENAME [ TO ] <新表名>: 注意:其中[TO]为可选参数,使用与否不影响结 ...
- java:并发编程-Callable与Future模式
自己对线程池的理解: coresize 3 maxsize 5 blockLinkedQuenue 3 当提交的任务在<=3时,创建三个线程干活 大于3时,把任务先加入阻塞式队列,当有空闲的核心 ...
- JAVA多线程编程之生产者消费者模式
Java中有一个BlockingQueue可以用来充当堵塞队列,下面是一个桌面搜索的设计 package net.jcip.examples; import java.io.File; import ...
- java面向对象编程——第八章 类的高级概念
8.1访问修饰符: public:该类或非该类均可访问: private: 只有该类可以访问: protected:该类及其子类的成员可以访问,同一个包中的类也可以访问: 默认:相同数据包中的类可以访 ...
随机推荐
- javaScript 删除确认实现方法总结分享
第一种方法:挺好用的,确认以后才能打开下载地址页面.原理也比较清晰.主要用于删除单条信息确认.<SCRIPT LANGUAGE=javascript> function p_del() { ...
- HDU 5419——Victor and Toys——————【线段树|差分前缀和】
Victor and Toys Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others ...
- c#-day04学习笔记
面向对象 类与对象: C#的类和对象是用于在程序中模拟现实生活中的事务的 C#中的类是一种数据类型,用来定义对象的类型的 C#的对象是类的实例,是基于[给定数据类型]的具体的一个实例 小结: 类是对象 ...
- iOS-swift-枚举和结构体
1.枚举 使用关键字 enum 创 建枚举. 枚举默认起始值为 0,可以自定义起始值. 在枚举中可以定义方法,和类中定义的一样. 使用关键字 rawValue 访问当前枚举的值. enum Rank: ...
- 装配bean,基于xml
一.bean的实例化方式 1.默认构造 <bean id="" class=""></bean> 必须提供默认构造方法 2.静态工厂 用 ...
- FastDFS 基础知识
FastDFS是一个开源的轻量级分布式文件系统,它用纯C语言实现,支持Linux.FreeBSD.AIX等UNIX系统.它只能通过专有API对文件进行存取访问,不支持POSIX接口方式,不能mount ...
- u-boot分析(十一)----MMU简单分析|u-boot分析大结局|学习规划
u-boot分析(十一) 通过前面十篇博文,我们已经完成了对BL1阶段的分析,通过这些分析相信我们对u-boot已经有了一个比较深入的认识,在BL2阶段大部分是对外设的初始化,并且有的我们已经分析过, ...
- Web前端开发规范(一)
1.前言 网页开发技术从1989年开始至今已经走过了20余年,从最初纯粹的学术交流,到门户网站.电子商务网站.博客.E-mail.Web游戏.SNS网站等,以及到如今的移动Web网站(其实可以认为是P ...
- java:错误Error,异常Excepition
java中throw异常后代码还会继续执行吗 今天遇到一个问题,在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢? public void add(i ...
- MySQL的基础(优化)1
1,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小 2,在可能的情况下,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值 3,对于某 ...