从零开始写ORM框架系列6——整合Spring连接池和事务

上一章,我们自己通过一个简单的SimpleTransaction让这个ORM工具支持了事务。虽然很简单,看起来也很实用,但想实际用于生产,肯定是不靠谱的, 仅仅作为学习用。这一章, 我们来看看,如何将数据库连接池和spring的事务管理器集成进来。让Spring来帮我们支持连接池和事务。


对连接池和事务的支持结果


这次, 我们先来看效果。

连接池测试

测试代码:


从零开始写ORM框架系列6——整合Spring连接池和事务_第1张图片


从零开始写ORM框架系列6——整合Spring连接池和事务_第2张图片

测试结果如下:


从零开始写ORM框架系列6——整合Spring连接池和事务_第3张图片

在这测试里,我们设置最大连接数为5, 开100个线程, 同时往表里插入数据,测试结果显示, maxActive和numActive都是5, 并且数据库里插入了100条数据,说明我们的连接池是起了作用的。


事务测试

测试代码:


从零开始写ORM框架系列6——整合Spring连接池和事务_第4张图片


从零开始写ORM框架系列6——整合Spring连接池和事务_第5张图片

测试结果:


从零开始写ORM框架系列6——整合Spring连接池和事务_第6张图片

这个测试里, 我们往foodinfo里插入了两条数据, 第二条数因为name属性为空, 会报一个异常。结果显示异常信息打出来了, 并且Foodinfo表的数据也没有插入第一条数据。说明我们完成了对事务的支持。



实现方式

引入相关的jar包。


从零开始写ORM框架系列6——整合Spring连接池和事务_第7张图片


从零开始写ORM框架系列6——整合Spring连接池和事务_第8张图片

2、配置datasource和事务


从零开始写ORM框架系列6——整合Spring连接池和事务_第9张图片


3、修改BaseDao的add方法

从零开始写ORM框架系列6——整合Spring连接池和事务_第10张图片

拼sql和参数的方法和前面文章讲到的方法一样, 不变。


总结

这个系列的文章到这里就暂时告一段落了,总结一下我们在这个ORM工具里完成了的工作:

1、支持SQLServer和MySql。

2、对比起ibatis,我们真正实现了零配置和零SQL,入手门槛极低。

3、支持查询指定SQL字段和查询条件里的指定where条件,防止SQL爆炸,防止因为select * 导致的数据库服务器、应用服务器的不必要开销(大多数下我们可能只需要表里的某一个字段)。

4、支持连接池。

5、支持事务。

6、实现了表到java实体代码的生成工具。


后面我们将继续考虑下,如何让我们的orm框架里支持水平拆分和垂直拆分的表。

你可能感兴趣的:(从零开始写ORM框架系列6——整合Spring连接池和事务)