我在我的 Eclipse 中使用 Spring 和 Hibernate 开发 Web 应用程序。我想将我的 Hibernate 查询或 Sql 查询存储在属性文件中,然后在 DAO 中使用它。请让我知道该怎么做?我正在使用通用 DAO ,有什么方法可以进行通用查询吗?稍后我想在属性文件中存储其他内容,如页面链接、标题。
所以基本上是三个相互关联的问题。
因为我想不出任何方法来进行通用查询所以我在具体类中重写了 findAll() 方法。
我在用
<context:property-placeholder location="classpath:properties/database.properties"/>
加载属性。但问题是如何使用它来获取java代码或类文件中的hql?
道
public abstract class AbstractHibernateDAO<T extends Serializable> {
public Class<T> clazz;//class object reference
protected SessionFactory mysessionFactory;
public void setClazz(final Class<T> clazzToSet) {
this.clazz = clazzToSet;
}
protected Session getCurrentSession() {
return mysessionFactory.getCurrentSession();
}
@SuppressWarnings("unchecked")
public List<T> findAll() {
return getCurrentSession().createQuery("from " + clazz.getName()).list();
}
我的具体 DAO
@Repository("categDAO")
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS,value="request")
public class CategoryDAO extends AbstractHibernateDAO<category_pojo>{
public CategoryDAO() {
setClazz(category_pojo.class);
}
@Override
public category_pojo findOneByName(String name) {
return (category_pojo) getCurrentSession().createQuery("from "+clazz.getName()+" where categoryName=:name").setParameter("name",name).uniqueResult();
}
}