我们认为一个好的ORM框架应该是这样的
-
不需要一个专门的组件来封装数据逻辑
类似数据查找这样的逻辑是业务逻辑的重要组成部分,不应该被单独由dao、repository对象甚至xml配置来实现
去除dao、repository这样一些专门为数据访问而创建的对象,将会使领域逻辑的编写不再割裂 -
简单的上下文
有一个上下文对象是必要且会带来好处的,例如可实现批量提交DML
但是维护实体对象和上下文对象之间的关系却是不必要的
应该能够随时随地执行数据访问,而不需要考虑是否已经关联到当前上下文 -
按需加载级联对象,而不仅仅是预加载
懒加载这种模式根本就不应该存在 -
动态表
在运行时动态设置表名 -
按需SELECT
在运行时动态的SELECT所需的列,而不是强制SELECT所有列 -
动态列
能够以key/ value的形式访问没有映射到实体类成员的列 -
缓存是不必要的
在ORM框架中提供缓存的功能,除了会让上下文对象和实体对象之间的关系变得复杂外,还会让使用者感到困惑 -
SQL操作符函数
SQL作为最成功的第四代语言不容被忽视。隐藏SQL并不符合开发人员的思维模式
为SQL操作符提供对应的函数,能够降低学习和使用成本 -
元数据编程
在运行时获取和修改元数据