MyBatis知多少(7)持久层
持久层是适合使用MyBatis的地方。在面向对象的系统中,持久层主要关注对象(或者更精确地说应该是存储在那些对象中的数据)的存取。在企业应用程序中持久层通常用关系数据库系统来存储数据,虽然某些情况下其他持久的数据结构或者介质也可能使用。如某些系统就可能会使用简单的以逗号分隔数据的平板文件或XML文件。考虑到企业应用程序的持久化策略往往具有异质性,因此持久层需要关注的第二个问题就是抽象。持久层应该隐藏关于数据如何被存储以及如何被取出的所有细节。这样的细节决不能暴露 给应用程序的其他层。
为更好地理解这些关注点及其如何被管理,我们将持久层又分为3层:抽象层、持久化框架 以及驱动程序/接口层,如下图。
让我们再仔细研究一下持久层细分后得到的这3层吧。
抽象层
抽象层的目的就在于为持久层提供一致且有意义的接口。它是一组类和方法的集合,这些类和方法是持久层实现细节。抽象层中的方法不能使用特定于实现的参数,也不能返回特定实现专用的类或抛出特定实现专用的异常。一旦合适的抽象层准备就绪,整个持久化方法(包 括持久化API以及存储设施)的改变就不再涉及该抽象层,也不能引起其他任何依赖层的改变。 有许多模式可用于帮助实现一个合适的抽象层,其中最常用的就是DAO模式。包括MyBatis在内的许多框架都为你实现了这个模式。
持久化框架
持久化框架负责与数据库驱动程序(或接口)的交互。持久化框架会提供用于存储、获取、 更新、查找以及管理数据的方法。与抽象层不同,持久化框架通常只针对一类存储设施。例如, 你可能会找到专用于处理XML文件的数据存储的持久化API。但是,对大多数现代企业应用程序 来说,关系数据库通常是存储设施的首选。大多数流行的编程语言都带有用于访问关系数据库的 标准API。JDBC是Java应用程序访问数据库的标准框架
①即“外观模式”,用于为一个子系统定义一组一致的接口。据库的标准持久化框架。这些标准API能够用于任何目的,因此它们的实现非常完备,只是使用 起来非常冗长和繁琐。基于这些原因,人们在标准API的基础上又创建了许多框架,使之功能更加专用,因此也更加强大。MyBatis就是这样的一个持久化框架,它专用于处理任何类型的关系数据库,且以一种一致的方式同时支持Java。
驱动程序/接口层
存储设施可以简单得像一个以逗号分隔数据的平板文件,也可以复杂得像一个价值几百万元的企业数据库服务器。但不论是哪种情况,总有一个软件驱动程序在底层与存储设施通信以交换数据。一些驱动程序,如本地文件系统驱动程序,虽然在功能上是通用的,但与平台相关。你也许永远也不会看到文件I/O驱动程序,但可以肯定的是它一定存在。另一方面,数据库驱动程序总是非常复杂,并且在实现、大小和行为上存在较大的不同。因此就需要由持久化框架来与这些数据库驱动程序通信,从而将它们之间的不同简化并降低到最低点。
系列文章:
MyBatis知多少(7)持久层的更多相关文章
- Mybatis学习之自定义持久层框架(三) 自定义持久层框架:读取并解析配置文件
前言 前两篇文章分别讲解了JDBC和Mybatis的基本知识,以及自定义持久层框架的设计思路,从这篇文章开始,我们正式来实现一个持久层框架. 新建一个项目 首先我们新建一个maven项目,将其命名为I ...
- Mybatis学习之自定义持久层框架(二) 自定义持久层框架设计思路
前言 上一篇文章讲到了JDBC的基本用法及其问题所在,并提出了使用Mybatis的好处,那么今天这篇文章就来说一下该如何设计一个类似Mybatis这样的持久层框架(暂时只讲思路,具体的代码编写工作从下 ...
- Mybatis学习之自定义持久层框架(一) 为什么要用框架而不直接用JDBC?
前言 说起Mybatis,相信大家都不会感到陌生,它是一款优秀的持久层框架,应用于java后端开发中,为客户端程序提供访问数据库的接口. 我们都知道,JDBC是Java语言中用来规范客户端程序如何来访 ...
- Mybatis学习之自定义持久层框架(七) 自定义持久层框架优化
前言 接上文,这里只是出于强迫症,凭借着半年前的笔记来把之前没写完的文章写完,这里是最后一篇了. 前面自定义的持久层框架存在的问题 Dao层若使用实现类,会存在代码重复,整个操作的过程模版重复(加载配 ...
- Mybatis学习之自定义持久层框架(六) 自定义持久层框架:完善CRUD方法并进行测试
前言 没想到会等到半年以后才来写这篇文章,我已经不记得当初自己想要在这篇文章中写什么了,还好有一些零散的笔记留着,就对照着上一篇文章及零散的笔记,把内容给补充完吧. 完善CRUD方法 完善Defaul ...
- Mybatis学习之自定义持久层框架(五) 自定义持久层框架:封装CRUD操作
前言 上一篇文章我们完成了生产sqlSession的工作,与数据库的连接和创建会话的工作都已完成,今天我们可以来决定会话的内容了. 封装CRUD操作 首先我们需要创建一个SqlSession接口类,在 ...
- Mybatis学习之自定义持久层框架(四) 自定义持久层框架:生产sqlSession
前言 上一回我们完成了数据库配置文件的读取和解析工作,有了这些准备工作,我们就可以与数据库创建连接和会话了,所谓sqlSession就是数据库的会话,一切增删查改操作都是在与数据库的会话中完成,下面我 ...
- mybatis与hibernate的区别持久层对比【面试题】
Mybatis技术特点: 好处: 通过直接编写SQL语句,可以直接对SQL进行性能的优化: 学习门槛低,学习成本低.只要有SQL基础,就可以学习mybatis,而且很容易上手: 由于直接编写SQL语句 ...
- Java持久层框架Mybatis入门
MyBatis是什么 MyBatis是Java的持久层框架,GitHub的star数高达15.8k,是Java技术栈中最热门的ORM框架之一.它支持自定义SQL.存储过程以及高级映射,可以通过XML或 ...
随机推荐
- paip.前端加载时间分析之道优化最佳实践
paip.前端加载时间分析之道优化最佳实践 1.另存为 ,查看文件尺寸..和图片. 2.view the 另存为的htm静态的文件单个的加载,看时间...可以排除编程语言的问题and 数据库.. ## ...
- DOM基本概念和操作
1.基本概念 DOM是文档对象模型(TEXT),对象是指文档中的每一个元素. 2.Window对象操作 打开方式: _blank 在新窗口还是自身窗口. Window.open 也有返回值,返回值为 ...
- Linux操作系统shell与函数详解
shell和函数的定义 1. linux shell 函数 将一组命令集或语句形成一个可用的块, 这些语句块称为函数. 2. shell 函数的组成 函数名:函数名字,注意一个脚本中函数名要唯一, ...
- 如何将Scrapy 部署到Scrapyd上?
安装上传工具 1.上传工具 scrapyd-client 2.安装方法: pip install scrapyd-client 3.上传方法: python d:\Python27\Scripts\s ...
- 解决连接MySql速度慢的方法
最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢.解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve. 原因是 ...
- 软件设计之UML—UML的构成[上]
UML是一种通用的建模语言,其表达能力相当的强,不仅可以用于软件系统的建模,而且可用于业务建模以及其它非软件系统建模.UML综合了各种面向对象方法与表示法的优点,至提出之日起就受到了广泛的重视并得 ...
- Installing Oracle and ArcSDE on separate servers
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002n0000000q000000
- P2P资料
常用链接 openstack创建实例的方法 http://www.cnblogs.com/popsuper1982/p/3800426.html qemu官网 http://wiki.qemu.org ...
- Codeforces Round #379 (Div. 2) D. Anton and Chess 水题
D. Anton and Chess 题目连接: http://codeforces.com/contest/734/problem/D Description Anton likes to play ...
- 【LeetCode】257. Binary Tree Paths
Binary Tree Paths Given a binary tree, return all root-to-leaf paths. For example, given the followi ...