《4.DAO模式及单例模式.pptx》由会员分享,可在线阅读,更多相关《4.DAO模式及单例模式.pptx(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、DAO模式及单例模式线上线下平台预习2/22本课目标学完本次课程后,你能够:掌握DAO模式使用配置文件保存数据库信息理解并掌握单例模式3/22为什么进行JDBC封装2-1编写完增删改查的方法后,观察几个方法这么写编写完增删改查的方法后,观察几个方法这么写有什么有什么弊端弊端?1、将相似功能的代码抽取封装成方法,减少代码冗余将相似功能的代码抽取封装成方法,减少代码冗余2、因为不同的数据库会有不同的实现,对数据库的操作一般因为不同的数据库会有不同的实现,对数据库的操作一般抽取成接口,在以后的开发中可以降低耦合抽取成接口,在以后的开发中可以降低耦合业务代码和数据访问代码耦合可读性差可读性差不利于后期
2、修改不利于后期修改和维护和维护不利于代码复用不利于代码复用问题注意4/22隔离业务逻辑代码和数据访问代码隔离不同数据库的实现数据访问代码数据访问代码MySQLSQLServerOracle业务逻辑代码业务逻辑代码业务逻辑代码调用数据访问接口业务逻辑代码调用数据访问接口为什么进行JDBC封装2-25/22实现JDBC封装将所有增删改查操作抽取成接口定义实体类传输数据将通用的操作(打开、关闭连接等)封装到工具类数据库工具类BaseDao:增、删、改、查的通用方法演示示例1:编写通用DAO升级增删改查新闻信息6/22什么是DAOData Access Object(数据存取对象)位于业务逻辑和持久化
3、数据之间实现对持久化数据的访问列列1列列2列列3类类DAO数据表数据表DAO起着转换器的作用,将数据在起着转换器的作用,将数据在实体类和数据库记录之间进行转换实体类和数据库记录之间进行转换7/22DAO模式的组成部分DAO接口DAO实现类实体类数据库连接和关闭工具类优势隔离了数据访问代码和业务逻辑代码隔离了不同数据库实现DAO模式的组成8/22课堂练习完成时间:15分钟共性问题集中讲解需求说明编写通用的数据库操作类,升级实现新闻信息的查询、增加、修改以及删除功能实现思路添加数据库操作类BaseDao,编写通用的打开资源、查询、增删改、关闭资源方法将NewsDao抽取成接口,编写实现类9/22配
4、置数据库访问参数弊端数据库发生改变时,要重新修改代码,重新编译和部署解决将数据库信息写在配置文件当中,让程序通过读取配置文件来获得这些信息新闻信息存储在新闻信息存储在MySQL数据库中,但在开发和部署时有可数据库中,但在开发和部署时有可能使用不同的数据库,也可能因为客户的需求而更换数能使用不同的数据库,也可能因为客户的需求而更换数据库产品。此时刚才读取新闻信息的做法有何弊端呢?据库产品。此时刚才读取新闻信息的做法有何弊端呢?问题10/22属性文件后缀为.properties数据格式为“键=值”使用“”来注释Java中提供了Properties类来读取配置文件driver=com.mysql.j
5、dbc.Driverurl=jdbc:mysql:/localhost:3306/xxxxusername=xxxxxxpassword=xxxx键键值值演示示例2:配置文件存储数据库信息11/22课堂练习完成时间:10分钟共性问题集中讲解需求说明使用配置文件存储数据库信息,升级实现JDBC查询新闻信息功能,最后将新闻信息在控制台正确输出实现思路编写配置文件database.properties创建包com.pb.news.util,编写类ConfigManager 读取属性文件修改NewsDao类的查询新闻信息的方法12/22小结什么是DAO?DAO模式的作用是什么?DAO是由哪几部分组成的
6、?JDBC操作中哪些地方建议读取配置文件?为什么?13/22为何需要单例模式BaseDao:操作数据库的基类每个线程对系统操作都需new一个BaseDao实例初始化时的I/O操作消耗系统资源,影响系统性能对于每个线程,可共享一个实例分析分组讨论14/22单例模式2-1系统运行期间,有且仅有一个实例一个类只有一个实例最基本的要求只提供私有构造器它必须自行创建这个实例定义了静态的该类私有对象它必须自行向整个系统提供这个实例提供一个静态的公有方法,返回创建或者获取本身的静态私有对象演示示例3:简单的单例模式实现15/22单例模式2-2在并发环境下上述的单例模式实现是否存在弊端,线程是否安全?是否会出
7、现多个configManager实例?懒汉模式饿汉模式分组讨论16/22懒汉模式在类加载时不创建实例,采用延迟加载的方式,在运行调用时创建实例特点线程不安全延迟加载(lazy loading)如何解决线程安全问题?同步(synchronized)演示示例4:懒汉模式-synchronized17/22饿汉模式在类加载的时候,就完成初始化特点线程安全不具备延迟加载特性演示示例5:饿汉模式18/22单例模式懒汉模式饿汉模式概念在类加载时不创建实例,采用延迟加载的方式,在运行调用时创建实例在类加载的时候,就完成初始化特点类加载速度快,但是运行时获取对象的速度较慢。“时间换空间”类加载较慢,但获取对象速度快。“空间换时间”延迟加载(lazy loa ding)具备不具备线程安全线程不安全线程安全注意:注意:在整个程序运行期间,有且仅有一个实例。在整个程序运行期间,有且仅有一个实例。若违背这一点,所设计的类就不是单例类若违背这一点,所设计的类就不是单例类!小结19/22总结DAO模式封装JDBC解耦DAO模式的组成部分使用属性文件配置数据库参数读取属性文件单例模式懒汉模式饿汉模式20/22问题及作业集中问题&课后作业21/22扫我有更多精彩课程呦
限制150内