数据持久化

  持久化:将程序中的数据在瞬间状态下和持久状态间转换的机制(JDBC)

  主要持久化操作:保存、删除、读取、和查找。

  采用面向接口编程,可以降低代码间的耦合性,提高代码的可扩展性和可维护性。

DAO模式

  1. DAO ( DataAccessObjects ,数据存取对象) :

位于业务逻辑和持久化数据之间实现对持久化数据的访问

  2.组成部分:

DAO接口:把对数据库的所有的操作定义成抽象方法,可以提供多种实现。

DAO实现类:针对不同数据库给出DAO接口定义方法的具体实现。

实体类:用于存放于传输对象数据。

数据库连接和关闭工具类:避免数据库连接和关闭代码的重复使用,方便修改

  3.DAO模式提供了访问关系型数据库系统所需操作的接口,将数据访问和业务逻辑分 离,对上层提供面向对象的数据访问接口

  4.优势:① 隔离了数据访问代码和业务逻辑代码;② 隔离了不同数据库实现。

分层开发

    优势:

  1. 每一层专注于自己功能的实现,便于提高质量
  2. 便于分工协作,提高效率
  3. 便于代码复用
  4. 便于程序扩展

 特点:

  1. 每一层都有自己的职责
  2. 上层不关心下层的实现细节,上层通过下层提供的对外接口来实现其功能
  3. 上层调用下层的功能,下层不能调用上层的功能;下层为上层提供服务,而不使用上层提供的功能

 原则:

  ①  封装性原则:每个层次向外提供公开的统一接口,隐藏内部的功能实现细节,其他层次不能也没有必要了解其内部细节。

  ②  顺序访问原则:下一层为上一层提供服务,而不使用上一层提供的服务

    (业务逻辑层  ---->     数据访问层       业务逻辑层  <---- 数据访问层)

实体类

        特征:1.属性一般用private修饰(getter/setter方法—---用public修饰);

2.最好实现java.io.Serializable接口支持序列化机制,可以将该对象转换成字节序列而保存在磁盘上或在网络上传输;

3.对实体类提供无参构造方法,根据业务需要提供相应的有参构造方法;

4.定义属性serialVersionUID,解决不同版本之间的序列化问题

(private static final long serialVersionUID=2070056025956126480L)

方法调用时:

表示层——>业务逻辑层——>数据访问层

写代码时:

数据访问层——>业务逻辑层——>表示层

实体类(表在面向对象中的实现):

        表名——类名、字段——属性     编写一个实体类,将一个表用类实现;包名——entity或models存放实体类

测试类、网页、界面UI(表示层)——main方法所在的类

业务逻辑层(桥梁作用):

表示层的数据,传递到数据访问层

BaseDAO类:

        对表进行操作的类(包存放)——数据访问层    对数据库的访问和操作(辅助类)

数据访问层 (DAO)的更多相关文章

  1. view是视图层+action是控制层+service是业务层+dao是数据访问层。

  2. servlet层调用biz业务层出现浏览器 500错误,解决方法 dao数据访问层 数据库Util工具类都可能出错 通过新建一个测试类复制代码逐步测试查找出最终出错原因

    package com.swift.jztk.servlet; import java.io.IOException; import javax.servlet.ServletException; i ...

  3. 随机获得MySQL数据库中100条数据方法 驾照题库项目 MVC架构 biz业务层的实现类 根据考试类型rand或order通过dao数据访问层接口得到数据库中100或全部数据

    package com.swift.jztk.biz; import java.util.Collections; import java.util.Comparator; import java.u ...

  4. 使用JDBC构建简单的数据访问层

    本教程的目的是使用Java编写的分离的层去访问数据库中的表,这一层通常称为数据访问层(DAL) 使用DAL的最大好处是通过直接使用一些类似insert()和find()的方法简化了数据库的访问操作,而 ...

  5. [置顶] 数据持久层(DAO)常用功能–通用API的实现

    在Web开发中,一般都分3层. Controller/Action 控制层, Service/Business 服务层/业务逻辑层, Dao 数据访问层/数据持久层. 在学习和工作的实践过程中,我发现 ...

  6. 数据持久层(DAO)通用API的实现

    在Web开发中,一般都分3层.Controller/Action 控制层,Service/Business 服务层/业务逻辑层,Dao 数据访问层/数据持久层. 在学习和工作的实践过程中,我发现很多功 ...

  7. ClownFish:比手写代码还快的通用数据访问层

    http://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html 阅读目录 开始 ClownFish是什么? 比手写代码还快的执行速度 ...

  8. Yii的学习(2)--数据访问对象 (DAO)

    摘自Yii官网:http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.dao Yii提供了强大的数据库编程支持.Yii数据访问对象(DAO) ...

  9. 使用Ninject+Moq在单元测试中抽象数据访问层

    一.测试方法的业务逻辑时,通常都需要从数据库读取测试数据,但是每次初始化数据库数据都很麻烦,也会影响到其它业务对数据的访问,怎样抽象数据访问层呢?就是用Moq去模拟数据访问的逻辑     二.步骤如下 ...

随机推荐

  1. FJWC2019 子图 (三元环计数、四元环计数)

    给定 n 个点和 m 条边的一张图和一个值 k ,求图中边数为 k 的联通子图个数 mod 1e9+7. \(n \le 10^5, m \le 2 \times 10^5, 1 \le k \le ...

  2. Wiki凭什么持续得到开发人员和团队的喜爱

    大家好,我是华为云DevCloud项目管理服务的产品经理恒少,作为布道师和产品经理,出差各地接触客户是常态,线下和华为云的客户交流.布道.技术沙龙. 但是线下交流,覆盖的用户总还是少数.我希望借助线上 ...

  3. 3.1、Factorization Machine模型

    Factorization Machine模型 在Logistics Regression算法的模型中使用的是特征的线性组合,最终得到的分隔超平面属于线性模型,其只能处理线性可分的二分类问题,现实生活 ...

  4. 4A - Horse

    打表找规律 #include <iostream> #include <queue> using namespace std; ][]; ]{, , , , -, -, -, ...

  5. django' 前端 self.status.split(' ',1)[0], self.bytes_sent AttributeError: 'NoneType' object has no attribute 'split'

    form 表单 post之后 ,重新定向当前页面的get请求 这是因为,form表单提交的时候,按钮在form表单里面

  6. Spring学习笔记(三)—— 使用注解配置spring

    一.使用步骤 1.1 导包 1.2 为主配置文件引入新的命名空间(约束) 在applicationContext.xml中引入context约束 1.3 编写相关的类 public class Use ...

  7. 洛谷 P3205 [HNOI2010]合唱队

    题目链接 题解 区间dp \(f[i][j]\)表示i~j区间最后一次插入的是\(a[i]\) \(g[i][j]\)表示i~j区间最后一次插入的是\(a[j]\) 然后就是普通区间dp转移 Code ...

  8. c++中map的基本函数

    c++中map的一些方法 begin() 返回指向map头部的迭代器     clear() 删除所有元素     count() 返回指定元素出现的次数     empty() 如果map为空则返回 ...

  9. gym101964G Matrix Queries seerc2018k题 cdq分治

    题目传送门 题目大意: 二维平面上有q次操作,每次操作可以是添加一个点,也可以是添加一个矩形,问每次操作后,有多少  点-矩形  这样的pair,pair的条件是点被矩形覆盖(边缘覆盖也算). 思路: ...

  10. 欧拉图 欧拉回路 欧拉通路 Euler的认识 (转)

    转:https://www.cnblogs.com/Ash-ly/p/5397702.html 定义: 欧拉回路:图G的一个回路,如果恰通过图G的每一条边,则该回路称为欧拉回路,具有欧拉回路的图称为欧 ...