【发布时间】:2012-01-03 13:18:23
【问题描述】:
我一直问自己这个问题,尤其是当我看到 JPA 2.0 元模型如何工作时...
例如在 JPA 2.0 中,我们可以使用处理器为实体 Entity 创建元模型类 Entity_
然后可以在 JPA 2.0 Criteria api 中使用此元模型来获得强类型标准。
例如,你会写:
criteriaBuilder.equal(u.get(User_.username), username);
而不是使用字段名作为字符串“用户名”。
我只是想知道为什么它没有在 Java 中本地处理,而不必处理处理器和几个额外的元数据类。
它不仅适用于 JPA,它也可以利用反射 api。
那么有什么原因我们不能直接在 java 类中访问元数据呢? 有人可以提供具有这种功能的缺点吗? 我猜可能是封装有问题吧?
有关 JPA2 元模型的更多信息: http://www.inze.be/andries/2010/09/19/jpa2-metamodel-example/
【问题讨论】:
-
只有一件事:您能否针对此类功能提及一个实际的、真实的案例?我不明白你的意思/想要什么
-
现实世界的用例很明显:能够用 JPA 2.0 标准 API 处理元模型,但不必处理生成元模型类的处理器
标签: java reflection jpa metaprogramming jpa-2.0