BM 公司的 Azadeh Ahadian 最近在 IBM 的 DeveloperWorks 网站发表了介绍JLINQ 的文章。她认为JLINQ 是“IBM 为Java 数据库应用开发所提供的新范例”。除了在名称上相似之外,JLINQ 与微软的LINQ 基本是两码事,实际上JLINQ 是Eclipse 的插件,提供数据库整合与运行时DAO 代码的生成功能。JLINQ 插件是IBM Developer Workbench 的一部分,将出现在下一个版本的DB2(Viper)之中。
Eclipse 的插件 JLINQ 提供了数据库操作以及从数据库表或 SQL 语句中生成 Java 对象的功能。Ahadian 列出了 JLINQ 的三种主要用法:
- Database-driven objectization (DDO):JLINQ 最常用的用法就是选择一个表,为数据访问与操作生成对应的对象,或是对其进行 CRUD 的操作。JLINQ 就是通过这种方式,在选中的数据表中,为执行 CRUD 操作而生成基于面向对象的类和接口。
- Query-driven objectization (QDO):JLINQ 系统通过简单的查询语句选择,然后在直观的 GUI 界面中,通过弹出的上下文菜单,轻松生成相关对象的类层次结构。
- Object-relational mapping (ORM):JLINQ 提供了一对一映射的机制,将类名映射到数据库中指定的表名,并且可以将类的 protected 或 public 变量映射为数据表的列名。
JLINQ 可以在设计阶段生成与 JPA 具有相似注解(annotation)的接口。在编译阶段,JLINQ 生成可以处理自定义对象 CRUD 操作的 接口。虽然 Ahadian 认为 JLINQ 是个 ORM 工具,但 JLINQ 并不像 Hibernate 那样会提供任何高级特性,例如多态、组合以及缓存等。甚至 没有任何相关文章或发布说明中提到过对于 JLINQ 使用的支持。JLINQ 与 Eclipse 的集成情况很好,并且将会节省开发时间,但是由于有类似 JPA 和 Hibernate 的存在,JLINQ 要想吸引公众的注意力还会有不少困难。
由于 JLINQ 与微软的 LINQ 在功能上并不相干,所以对于 JLINQ 最初的反对意见来自于名称上。 Jesse Davis 是这样描述两者不同的:
LINQ 的含义是语言集成查询(Language INtegrated Query),很明显的名不符实。我不清楚是否微软对于 LINQ 的名称具有特殊的权利,但我认为 IBM 使用这样一个从技术角度来讲存在谬误的词条,这种做 法是有欠妥当的。LINQ 实际上是集成在编程语言自身的机制。…JLINQ 并不属于此类。JLINQ 仅是 IBM 为 Eclispe 制作的新的 ORM 风格 的代码生成器。
在 Channel9 的一个讨论帖子上,对于 JLINQ 这个名称的选择同样也引起了争论。
评论