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

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


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


这次, 我们先来看效果。

连接池测试

测试代码:



测试结果如下:


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


事务测试

测试代码:



测试结果:


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



实现方式

引入相关的jar包。



2、配置datasource和事务



3、修改BaseDao的add方法

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


总结

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

1、支持SQLServer和MySql。

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

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

4、支持连接池。

5、支持事务。

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


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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 最近正在看spring in action里对事务的实现,读书之余也在考虑给这个ORM加上事务的功能,并集成到sp...
    窝牛狂奔阅读 796评论 0 1
  • 转载,觉得这篇写 SQLAlchemy Core,写得非常不错。不过后续他没写SQLAlchemy ORM... ...
    非梦nj阅读 5,645评论 1 14
  • 文/迷雾 山庄 沙漠里的人渴望绿洲,没有绿洲,哪怕一口水、一把湿土也行,都是生命的延续,假如有不期而遇的零星小雨,...
    37ba71a25722阅读 332评论 1 4
  • 前言 在CSS3中出现了可以创建动画的新属性,它比Flash制作出来的动画更加的方便,长话短说直接进入正题学习。 ...
    Rin阳阅读 3,769评论 0 1
  • 不知道从那天开始,门前的那群麻雀失去了踪迹,喧闹了一整个冬天的它们离去了,它们在时恨不得早日离去,那样的话我就可以...
    七千猫阅读 597评论 0 1

友情链接更多精彩内容