hibernateTemplate3.0中什么时候用find()方法 ,什么时候用createQuery()方法呢?它们之间的区别?
发布网友
发布时间:2022-04-10 08:48
我来回答
共1个回答
热心网友
时间:2022-04-10 10:17
find()在类检索级别时总是执行立即检索而且如果检索不到相关的对象的话会返回null,他是一个重载方法。
public List find(final String queryString, final Object[] values) throws DataAccessException {
return (List) executeWithNativeSession(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Query queryObject = session.createQuery(queryString);
prepareQuery(queryObject);
if (values != null) {
for (int i = 0; i < values.length; i++) {
queryObject.setParameter(i, values[i]);
}
}
return queryObject.list();
}
});
}
Hibernate中的find是根据主键首先去缓存中查找,找到就直接返回,找不到就接着去数据库中查找;find()方法第一次没查询数据库未查到符合的数据就新建一个,再次查询时应该能查到,否则就会重复了。这时候Hibernate find查找的是新建的那一条数据。