今天为了找一个错花了一个半小时,最终发现有一个小地方写错了。
虽然这个错误与Freyja没什么关系,但是我从中对Freyja做了下反省:
我在开始动工Freyja1的时候是非常有信心的,因为我觉得Freyja不是为了轮子而轮子,而是从实际应用出发解决ORM框架带来的性能上的提升,之前也说过,ORM能解析sql 能掌握数据,所以能从中改造获得性能上的提升。
对比JDBC而言,ORM才是真正地主人,JDBC只不过是数据库的傀儡。
到了Freyja2,我发现如果层次设计得足够好,完全可以在上层配合缓存把整个数据层给屏蔽掉。
这样一来完全不用去处理缓存,所以就有了对spring aop cache 的改造,只需要少量编码就能实现这一点。
ORM从缓存中解脱了出来,只需要做纯粹的映射工作。
这样就有了Freyja2的cache和ORM。
Freyja2的Sharding功能把sql从分表分库工作中完全解脱出来,在ORM之上通过简单的配置达到对sql的无侵入性实现Sharding
到了Freyja2,如果不需要Sharding功能。这个ORM还有利用价值么?我很怀疑。
ORM的成熟产品很多,单看ORM功能我说不出Freyja的ORM有什么独到之处。
也许Sharding功能成为了Freyja2存活的唯一理由。
我觉得,今后我只需要做2件事情:
1、配合好JdbcTemplate,使之成为真正的ORM
2、加强Sharding功能,使之变得更加完美