自定义持久层框架

前言

开发过程中,鉴于直接用JDBC与数据库交互存在数据库连接频繁创建和释放、sql硬编码、维护不方便等原因,通常我们会使用持久层框架来完成应用层和数据库的交互。最熟悉的持久层框架莫过于ibatis、mybatis和hibernate框架。当然了这个文章不是教你如何使用某个框架,而是自定义持久层框架、带你理解数据库交互的一些细节。这个框架参考了mybatis的设计思路。

一、自定义持久化框架思路是什么?

1.框架定位

首先我们需要明确一点:自定义持久层框架不是直接和数据库交互,我们还是利用JDBC来实现数据交互。我们可以这么理解,我们只是在JDBC和应用层之间又加了一层,目的就是为了解决JDBC现存的硬编码、难以维护、连接频繁创建和销毁带来的资源浪费和性能缺陷。

2.JDBC存在问题及其解决

(1)使用数据库连接池初始化连接资源。

(2)将sql语句抽取到配置文件。

(3)使用反射和内省等技术,将实体属性和表字段进行映射。

3.框架设计思路

(1)使用端

          提供核心配置文件:miracleFrameConfig.xml:存放数据源信息,引入mapper.xml(用来配置sql的一个xml文件)。

          提供sql配置文件:配置一些sql信息

(2)框架端

          a.读取配置文件

             配置文件需要转化成java bean的形式,所以我们定义两个bean对应上面的两个配置文件。

             Configuration:数据库的配置信息、还要定义一个map 来存放 mapper的解析出来sql. Map<唯一标识,Mapper>。那唯一标识如何选取呢?因为可能有多个mapper文件。并且一个mapper文件中可以有很多的                         sql.所以唯一标识我们需要是文件的唯一标识加上该文件里的sql的唯一标识。我们看图应该能理解更透彻一点。

             MappedStatement:sql语句、statement类型、输入参数java类型、输出参数java类型。

               b.解析配置文件

                        创建sqlSessionFactoryBuider类  :

                               方法:sqlSessionFactory build(0方法:     

                                      第一:使用dom4j来解析配置文件。封装到configuration和mappedStatement中。

                                      第二:创建sqlSessionFactory实现类DefaultSqlSession。    

              c.创建sqlSessionFactory:

                        创建SqlSessionFactory。sqlSessionFactory属于工厂类,用来生产sqlSession的工厂类。因为所有的交互都是sqlSession来完成。

                       方法:openSession():

             d.创建sqlSession接口及其实现类,主要是实现crud方法。

 

二、实现步骤

1.自定义框架

         目录结构:

然后我们一步步解读:

(1)我们需要读取配置xml文件为字节流。

2.解析字节流封装到配置文件对应的java配置bean中。也就是Configuration类和MapperAnalyze类。具体过程我已经在代码里面注释。

          首先我们看一下我们使用框架时候配置文件应该长什么样子,我们就能够理解我们怎么配这个配置文件了。

           

         解析xml配置文件代码:

         

       构建sqlSessesion工厂:

        

        构建sqlSession并实现crud接口

                

       具体如何实现crud,可以到源码里面看一下。其实是用了执行器来实现。Excutor类来调用JDBC方法。

       

       可以对照着实现思路一步一步看下去。 

       当然了。源码我放在了gitee上。https://gitee.com/bizq/lago-homework/tree/master/code/%E7%AC%AC%E4%B8%80%E9%98%B6%E6%AE%B5/

       可以参考。


总结

加油吧!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
基于JDBC实现自定义持久层框架可以分为以下几个步骤: 1. 设计数据访问接口:首先,你需要定义数据访问接口,包括插入、更新、删除和查询等操作的方法。这些方法应该是通用的,可适用于不同的实体类。 2. 编写实现类:接下来,你需要编写具体的实现类来实现数据访问接口。在这个实现类中,你可以使用JDBC来连接数据库,并执行SQL语句。 3. 定义实体类:为了与数据库中的表进行映射,你需要定义实体类。这些实体类应该与数据库表的结构相对应,并且包含与表中列对应的属性。 4. 建立连接:在进行数据库操作之前,你需要建立与数据库的连接。可以使用JDBC提供的`java.sql.Connection`对象来创建连接。 5. 执行SQL语句:通过使用JDBC提供的`java.sql.Statement`或`java.sql.PreparedStatement`对象,你可以执行SQL语句。可以通过编写动态SQL语句或使用预编译语句来实现各种操作。 6. 处理结果集:对于查询操作,你需要处理返回的结果集。可以使用JDBC提供的`java.sql.ResultSet`对象来遍历结果集并获取数据。 7. 关闭连接:完成数据库操作后,记得关闭连接以释放资源。可以使用`java.sql.Connection`对象的`close()`方法关闭连接。 通过以上步骤,你可以基于JDBC实现自定义持久层框架。当然,在实际应用中,你还可以考虑使用连接池、事务管理等技术来提高性能和可靠性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值