互联网技术交流Java

从零开始写ORM框架系列1

2017-03-24  本文已影响73人  窝牛狂奔


该系列完整的代码可以在我的git下载到


背景

因为.net转java的原因,我们需要一套orm的框架。

我们组维护一个主要的DB,大概几百张表,大部分的表的数据都在千万行以上,上亿的也有。而且由于现在公司正在从SQLServer迁移到MySQL,所以需要orm框架同时支持SQLServer和MySQL。

框架调研

首先考虑的是公司提供的DAL框架,不过看了文档,弄了个helloword,总体感觉下来比较糟糕。主要如下几点:

1、不支持author。生产发现某个SQL有问题,不能快速的找到谁写的,为什么写。从而快速的修改或者回滚代码。

2、不管数据库是否为空,所有的字段生成出来全是封包的类型,比如不是int而是Integer。这样导致代码里需要各种判空,一个不小心就会掉坑里去。

3、指定查询字段很麻烦,而且字段名指定错了编译也不报错,只有真正执行查询的时候才会报错。不指定字段的话,默认是select *,但是我们公司DBA要求不能select *,一定要指定字段,不指定的话对数据库服务器的网络,服务器IO压力都很大,查询出来之后,查询出来一堆没用的字段,对业务的服务器压力也很大。

这3个原因也是我们考虑放弃公司DAL框架的主要原因。

然后因为以前在其他公司也用过hibernate跟myibatis,所以也考虑过用ibatis,但是还是发现有几个通用的问题:

1、都要自己写SQL或者配置文件,比较麻烦。

2、不支持指定查询内容,指定的话就会造成类或方法的膨胀。

3、SQL没有author。

所以,最后还是决定自己弄一个orm框架。写这个orm,从有想法到真正完成,大概用了一个星期的班余时间。

基本要求

1、能同时支持SQLServer和MySQL

2、默认author

3、零配置文件

4、支持指定查询字段,不能用select *。

5、更新和删除一定要指定主键。

6、有CodeGen,能根据表自动生成实体。

7、开发使用起来方便。

上一篇下一篇

猜你喜欢

热点阅读