boy*_*715 4 java performance annotations hibernate
使用命名查询和我们拥有的查询有什么好处吗?看性能,可用性,可维护性等等....
在我们的应用程序中,我们已经定义了如下查询:
private static final String SELECT_CODE_FOR_STORE = "select DISTINCT code from Code code "
+ "join code.codeDescriptions codeDesc "
+ "join codeDesc.stores store where store.id =:"
+ DataAccessConstants.PARAM_STORE_ID;
Run Code Online (Sandbox Code Playgroud)
(这些都放在DAO对象中,其中有很多.)
我们通过以下方式调用上述内容:
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("storeId", codeDescriptionSearchCriteria.getStoreId());
List<Code> list = getJpaTemplate().findByNamedParams(
SELECT_CODE_FOR_STORE, paramMap);
return list;
Run Code Online (Sandbox Code Playgroud)
这不过是:
public List findByNamedParams(final String arg0,
final Map<String,
? extends Object> arg1) throws DataAccessException
{
return org.springframework.orm.jpa.JpaTemplate.findByNamedParams(arg0, arg1);
}
Run Code Online (Sandbox Code Playgroud)
与使用相比
@NamedQuery(name="SELECT_CODE_FOR_STORE", query="select ......")
Run Code Online (Sandbox Code Playgroud)
我们的DAO对象的顶部.
我看到这个帖子似乎是组织所有这些查询的好方法.或者,如果我们有这么多类型的查询,也许是时候重新评估我们的数据库和对象结构了.
我在你链接的问题中使用第二种方法(使用字符串常量命名查询).使用命名查询的主要优点是Hibernate在启动时解析查询,因此可以快速检测到任何错误.
至于你的整体方法,如果你需要很多命名查询,我肯定会质疑你的域模型.对于某些应用程序,这是必要的,但可能会考虑用实体中的延迟加载替换连接.另请参阅使用示例和条件的hobernate查询,因为这些也可以减少以面向对象的方式使用命名查询.
| 归档时间: |
|
| 查看次数: |
7568 次 |
| 最近记录: |