Java Persistence API 中带注释的命名查询是否真的非常有用?
2009-10-23 00:00:00 来源:WEB开发网可以有任意多个映射文件。可以进行设计,让关联实体映射到一个 XML 文件中,或将它们分离出去。可以在一个单独的 XML 文件中保存所有查询。这就是我要建议的内容。
最后,您可以拥有命名本机查询,并将结果映射回 POJO。
例如,可以将怀疑可能更改的任何查询放在外部。在必须更改源、执行构建和安装应用程序时,考虑花费的时间量。如果能够仅更改查询并重新启动,则可以更快地进行测试。在性能测试过程中能够快速更改查询可以大大缩短测试周期。
另一种情况是销售软件的 ISV 需要针对他们销售的产品优化查询,以便与客户选择的特定数据库供应商合作。例如,更改某些子句的排序可以帮助提高某些数据库的性能。如果无法更改查询,则不能改进性能。
使用本机命名查询的能力更加强大,因为您可以使用本机 SQL 将复杂查询映射回 POJO,即使它们已通过其他方式映射。请看以下示例:
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm jpa.xsd ">
<named-native-query name=" OrderItemResults " query="SELECT o.id,
o.quantity, o.item, i.id, i.name, i.description FROM Order o, Item i WHERE
(o.quantity > 25) AND (o.item = i.id)" result-class=""
result-set-mapping="OrderItemResults" />
<sql-result-set-mapping name="">
<entity-result entity-class="com.acme.Order.class">
<!-- <field-result column="" name=""/>
<etc..> -->
</entity-result>
<entity-result entity-class="com.acme.Item.class">
<!-- <field-result column="" name=""/>
<etc..> -->
</entity-result>
</sql-result-set-mapping>
</entity-mapping>
Tags:Java Persistence API
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接