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结尾的配置文件。

在文件中添加配置信息:
eg:

Driver=com.mysql.jdbc.Driver                   //添加加载驱动的字符串

Url=jdbc:mysql://localhost:3306/epet           //添加链接的字符串,localhost也可以为IP地址,3306为端口号,epet是数据库名称

Username=epetAdmin                         //数据库用户名

Password=root                             //数据库用户密码

Java中的配置文件常为properties文件

后缀为.properties

格式是“键=值”格式

使用“#”来注释

       ●Java中提供了Properties类来读取配置文件

方法名

说   

String
getProperty(String key)

用指定的键在此属性列表中搜索属性。通过参数key得到其所对应的值

Object
setProperty(String key,String value)

调用Hashtable的方法put。通过调用基类的put()方法来设置键-值对

void
load(InputStream inStream)

从输入流中读取属性列表 (键和元素对)。通过对指定文件进行装载获取该文件中所有键-值对

void clear()

清除所装载的键-值对,该方法由基类Hashtable提供

6、使用实体类传递数据:数据访问代码和业务逻辑代码之间通过实体类类传输数据,把相关的信息封装到实体类中,程序把实体类作为方法的参数来传递。

实体类的特征

  实体类一般属性使用private修饰

  根据业务需求和封装性要求对实体类进行getter/setter方法,负责属性的读取和赋值,一般使用public修饰

  对实体类提供无参的构造函数,根据业务需求提供有参数的构造方法。

  实体类最好实现java.io.Serializable接口,支持序列化机制,可以将改对象转化为字节序列化而保存到磁盘(硬盘)或者网络上传输。

  如果实体类实现了serializable接口。就应该定义属性serialVersionUID,解决不同版本的序列化问题。。。

 

JAVA / MySql 编程——第八章 DAO 模式的更多相关文章

  1. Java实验项目六——使用DAO模式实现对职工表的操作

    Program: 利用JDBC访问职工信息表,实现对职工信息的添加.更新.删除.按照职工号查找.查找全部职工的功能. Description:在这里我采用了DAO设计模式完成对职工表的操作,下面介绍一 ...

  2. Java笔记——面向接口编程(DAO模式)

    1.DAO模式  DAO(Data Access Object)模式就是写一个类,把访问数据库的代码封装起来.DAO在数据库与业务逻辑(Service)之间.     l  实体域,即操作的对象,例如 ...

  3. JAVA / MySql 编程——第七章 JDBC

    1.JDBC:JDBA是Java数据库连接(Java DataBase Connectivity)技术的简称,提供连接各种常用数据库的能力:         ●Java是通过JDBC技术实现对各种数据 ...

  4. JAVA / MySql 编程——第二章 初始MySQL

    1. MySQL:        ●  MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.            MySQL最流行的关系型数据库管理系统, ...

  5. JAVA / MySql 编程——第五章 事务、视图、索引、备份和恢复

    1.事务(Transaction): 事务是将一系列数据操作绑成一个整体进行统一管理. 如果一事务执行成功,则咋子该事务中进行的所有数据更改均会提交,称为数据库中的永久成部分. 如果事务执行是遇到错误 ...

  6. JAVA / MySql 编程—— 第三章 高级查询(一)

    1.        修改表: (1)修改表名语法: ALTER TABLE <旧表名> RENAME [ TO ] <新表名>: 注意:其中[TO]为可选参数,使用与否不影响结 ...

  7. java:并发编程-Callable与Future模式

    自己对线程池的理解: coresize 3 maxsize 5 blockLinkedQuenue 3 当提交的任务在<=3时,创建三个线程干活 大于3时,把任务先加入阻塞式队列,当有空闲的核心 ...

  8. JAVA多线程编程之生产者消费者模式

    Java中有一个BlockingQueue可以用来充当堵塞队列,下面是一个桌面搜索的设计 package net.jcip.examples; import java.io.File; import ...

  9. java面向对象编程——第八章 类的高级概念

    8.1访问修饰符: public:该类或非该类均可访问: private: 只有该类可以访问: protected:该类及其子类的成员可以访问,同一个包中的类也可以访问: 默认:相同数据包中的类可以访 ...

随机推荐

  1. 打乱式排序的Java版实现

    项目中涉及到对大批量的数据进行打乱式排序,大概原理如下: 输入源数据:1,1,2,3,3,3,4,4 输出结果:   1,2,3,4,1,3,4,3 实现代码如下,采用递归的思想: static &l ...

  2. 延迟查询--LINQ

    1.LINQ查询使用的是延迟查询的方法,以便提高效率 public static IEnumerable<TSource> Where<TSource>(this IEnume ...

  3. hql基础入门

    [转]进入HQL世界 一个ORM框架是建立在面向对象的基础上的.最好的例子是Hibernate如何提供类SQL查询.虽然HQL的语法类似于SQL,但实际上它的查询目标是对象.HQL拥有面向对象语言的所 ...

  4. C# 一些零零碎碎的方法,都是些帮助类,留存,也希望能帮助到各位

    ---------------------------------------------------------------------------------------------------- ...

  5. #if #endif #elif #undef

    #define aaa           //放在代码最前面 int a = 1; a = a + 1; #if !aaa {a = a + 1;}#elif !aaaaa {a=a+11;}#en ...

  6. GitHub安装缓慢甚至下载失败的解决办法

    1.打开控制面板→ Internet 选项→“安全”选项卡. 2.选择“受信任的站点”→点击“站点”按钮. 3.弹出的窗口中的文本框中输入点击“添加” https://github-windows.s ...

  7. iOS 上滑隐藏导航,下滑显示导航,仿斗鱼导航效果

    UItableView或 UIcollectionView 都是继承UIScrollView 滑动的时候,判断是上滑还是下滑 使用 UIScrollView 的代理方法 func scrollView ...

  8. 《Head First 设计模式》之状态模式——糖果机

    状态模式(State) ——允许对象在内部状态时改变它的行为,对象看起来好像修改了它的类. 策略模式与状态模式的区别 状态主体(拥有者)持有状态对象,运行时可以通过动态指定状态对象来改变类的行为 策略 ...

  9. centos yum 安装jdk后配置JAVA_HOME

    centos6.4 yum 安装jdk和JAVA_HOME的设置 2014-06-17 16:13 1176人阅读 评论(0) 收藏 举报  分类: linux(3)  版权声明:本文为博主原创文章, ...

  10. pc端的企业网站(IT修真院test8)详解1-4

    今天完成的事情:(1,伪元素:before,:after的使用.2.table的使用(collapse的使用)3rgba的高级运用) 今天我主要完成test8-3的页面. header和footer都 ...