DAO模式及单例模式

embedded/2024/10/30 13:09:21/

DAO模式及单例模式

1.为什么进行JDBC封装

1、将相似功能的代码抽取封装成方法,减少代码冗余

2、因为不同的数据库会有不同的实现,对数据库的操作一般抽取成接口,在以后的开发中可以降低耦合

隔离业务逻辑代码和数据访问代码

隔离不同数据库的实现

2.实现JDBC封装

将所有增删改查操作抽取成接口

定义实体类传输数据

将通用的操作(打开、关闭连接等)封装到工具类数

据库工具类BaseDao:增、删、改、查的通用方法

3,什么是DAO

Data Access Object(数据存取对象)

位于业务逻辑和持久化数据之间

实现对持久化数据的访问

DAO模式的组成

DAO模式的组成部分:

DAO接口

DAO实现类

实体类

数据库连接和关闭工具类

优势:

隔离了数据访问代码和业务逻辑代码

隔离了不同数据库实现

4.配置数据库访问参数

弊端:

数据库发生改变时,要重新修改代码,重新编译和部署

解决:

数据库信息写在配置文件当中,让程序通过读取配置文件来获得这些信息

属性文件

后缀为.properties

数据格式为“键=值”

使用“#”来注释

driver=com.sql>mysql.jdbc.Driver
url=jdbc:sql>mysql://localhost:3306/xxxx
username=xxxxxx
password=xxxxdriver===键
com.sql>mysql.jdbc.Driver===值

5.单例模式

为何需要单例模式

BaseDao:操作数据库的基类

每个线程对系统操作都需new一个BaseDao实例

初始化时的I/O操作消耗系统资源,影响系统性能

对于每个线程,可共享一个实例

单例模式

系统运行期间,有且仅有一个实例

一个类只有一个实例——最基本的要求

只提供私有构造器

它必须自行创建这个实例

定义了静态的该类私有对象

它必须自行向整个系统提供这个实例

提供一个静态的公有方法,返回创建或者获取本身的静态私有对象

懒汉模式

在类加载时不创建实例,采用延迟加载的方式,在运行调用时创建实例

特点:

线程不安全

延迟加载(lazy loading)

如何解决线程安全问题?

同步(synchronized)

饿汉模式

在类加载的时候,就完成初始化

特点:

线程安全

不具备延迟加载特性

总结

注意: 在整个程序运行期间,有且仅有一个实例。若违背这一点,所设计的类就不是单例类

单例模式懒汉模式饿汉模式
概念在类加载时不创建实例,采用延迟加载的方式,在运行调用时创建实例在类加载的时候,就完成初始化
特点类加载速度快,但是运行时获取对象的速度较慢。——“时间换空间”类加载较慢,但获取对象速度快。——“空间换时间”
延迟加载(lazy loa ding)具备不具备
线程安全线程不安全线程安全

http://www.ppmy.cn/embedded/133618.html

相关文章

TensorFlow面试整理-分布式

在深度学习的训练过程中,随着数据量和模型的复杂性增加,单个 GPU 或 CPU 无法满足高效训练的需求。TensorFlow 提供了强大的 分布式训练 功能,通过并行处理加速训练过程。分布式训练可以在多个 GPU、多个机器甚至是 TPU 上运行。以下是分布式训练的关键概念及其使用方法。 1…

51单片机STC8G串口Uart配置

测试环境 单片机型号:STC8G1K08-38I-TSSOP20,其他型号请自行测试; IDE:KEIL C51; 寄存器配置及主要代码 STC8G系列单片机具有4个全双工异步串行通信接口;本文以串口1为例,串口1有4种工作方式…

【机器学习】Softmax 函数

Softmax 是机器学习中常用的函数,广泛用于多分类问题的输出层。它可以将一组实数转换为一个概率分布,使得结果满足“非负”和“总和为1”的要求。在分类问题中,Softmax 让模型预测的每个类别概率都易于解释。本文将详细讲解 Softmax 的原理、…

this指针使用演示(C++)

this指针指向当前对象,且是已经创建的对象 使用this指针甚至可以让成员函数的参数和成员变量重名 图中高亮部分体现了成员变量与成员函数参数的关系 显然,this指针指向的变量与对象的成员变量相关联 this指针只在类的成员函数内部使用 演示代码如下&…

2024年10月29日Github流行趋势

项目名称:Amphion 项目维护者:lmxue HeCheng0625 yuantuo666 RMSnow HarryHe11 项目介绍:Amphion是一个用于音频、音乐和语音生成的工具包。它旨在支持可重复的研究,并帮助初学者在音频、音乐和语音生成研究与开发领域起步。 项目…

京东双十一高并发场景下的分布式锁性能优化

背景 在电商领域,尤其是像京东双十一这样的大促活动,系统需要处理极高的并发请求。这些请求往往涉及库存的查询和更新,如果处理不当,很容易出现库存超卖、数据不一致等问题。分布式锁作为一种有效的解决方案,能够在多…

windows server 2008 建立ftp服务器

本机IP:192.168.214.135 右键进入服务器管理器,点击功能,添加功能 可以全选,也可以只选ftp服务器 打开iis管理器 把防火墙关闭 浏览本机ip,安装成功 新建一个组,ftpgroup,在新建一个用户ftpuser,把用户加入组中 用WinS…

WPF的行为(Behavior)

WPF(Windows Presentation Foundation)是微软.NET框架中用于构建Windows客户端应用程序的UI框架。它提供了一种声明性的方式来定义用户界面,并且支持MVVM(Model-View-ViewModel)设计模式。 在WPF中,“行为…