WEB开发网
开发学院软件开发Java Java Persistence API 中带注释的命名查询是否真的... 阅读

Java Persistence API 中带注释的命名查询是否真的非常有用?

 2009-10-23 00:00:00 来源:WEB开发网   
核心提示: 可以有任意多个映射文件,可以进行设计,Java Persistence API 中带注释的命名查询是否真的非常有用?(4),让关联实体映射到一个 XML 文件中,或将它们分离出去,使用本机命名查询的能力更加强大,因为您可以使用本机 SQL 将复杂查询映射回 POJO,可以在一个单独的 XML 文

可以有任意多个映射文件。可以进行设计,让关联实体映射到一个 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>

上一页  1 2 3 4 5  下一页

Tags:Java Persistence API

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接