阅读更多

5顶
0踩

编程语言

原创新闻 让JPA查询也支持重构 - LIQUidFORM

2008-12-03 09:03 by 见习记者 QuakeWang 评论(10) 有6262人浏览
LIQUidFORM 是一个支持类型安全和重构的JPA查询构建工具,它定义了一套类似.net的LINQ DSL (Domain Specific Language)

假设我们有这样的JPA查询:
List people = em.createQuery(
"SELECT FROM Person p WHERE p.surname LIKE 'Smith%'")
.getResultList();

如果我们改变了surname属性,IDE会帮助自动改写其他相关的类,但是在上面JPA查询字符串中的内容不会改变,你需要手工修改。
LIQUidFORM 采用了如下的DSL进行查询构建:
Person p = LiquidForm.use(Person.class, "p");
List people = em.createQuery(
select(p).from(Person.class).as(p).where(like(p.getSurname(), "Smith%")).toString())
.getResultList();


可以看到这个格式和JPA查询语法很类似,但是因为采用了p.getSurname()这样的强类型写法,能够自动支持重构。

LIQUidFORM下载地址: http://code.google.com/p/liquidform,开源协议基于 Apache Software License v2


---译者分割线---
和其他语言相比,我们在Java中追求的类型安全和IDE重构支持是一个很麻烦的问题吗,Java是否走错了方向?
5
0
评论 共 10 条 请登录后发表评论
10 楼 sgp2004 2008-12-04 10:09
看着就很头疼
9 楼 yananay 2008-12-04 00:02
我的天,和 toplink 有嘛区别??太复杂了!
8 楼 魔力猫咪 2008-12-03 19:51
我倒觉得不错。很多数据库查询语句都有参数太多和参数不定的问题。能动态构造的话能省很多事,也不容易出现注入漏洞。
7 楼 deepthink 2008-12-03 15:43
褒贬不一,纯文本更直观
6 楼 digithuman 2008-12-03 14:57
感觉 SQL 还是好些  Linq 感觉很不直观
5 楼 mikeandmore 2008-12-03 10:26
好像django orm
4 楼 tapestry 2008-12-03 10:21
重构字段的几率很少,为了这个引入个框架有点不合适,不过点子不错,最近关于java语法的讨论多了,这叫"方法链"么,像set值得时候返回this,这样就不停的set下去。
3 楼 maoweiwer 2008-12-03 10:15
select(p).from(Person.class).as(p).where(like(p.getSurname(), "Smith%")).toString())

这一段看起像什么....不过用熟悉了还好.感觉怪怪的
2 楼 aaronluo 2008-12-03 09:36
select(p).from(Person.class).as(p).where(like(p.getSurname(), "Smith%")).toString())
这也太复杂了,我还是sql去好了
1 楼 dotyso 2008-12-03 09:32
  
select(p).from(Person.class).as(p).where(like(p.getSurname(), "Smith%")).toString())

很难看的语法

其实我不喜欢.net 中的 Linq 语句, 它太像sql, 在命令语言中出现反而不伦不类
var query = from p in Person where p == "Smith" select p





发表评论

您还没有登录,请您登录后再发表评论

相关推荐

Global site tag (gtag.js) - Google Analytics