我正在Eclipse中开发Web应用程序和Hibernate。 我想在属性文件中存储我的Hibernate查询或Sql查询,然后在DAO中使用它。 请告诉我怎么做? 我正在使用通用DAO,有没有办法进行通用查询? 后来我想存储其他内容,如页面链接,标题也在属性文件中。
所以基本上是三个相互关联的问题。
因为我想不出任何方式来进行泛型查询所以我在具体类中重写了findAll()方法。
我正在使用
<context:property-placeholder location="classpath:properties/database.properties"/>
加载属性。但问题是如何使用它来获取java代码或类文件中的hql?
DAO
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();
}
}
答案 0 :(得分:0)
如果我理解正确,这听起来像普通的Spring使用。
你可能有一个类:
class userDao {
String findActiveUsers;
//... Getters and Setters
public List<User> findActiveUsers() {
return getCurrentSession().createQuery(findActiveUsers).list();
}
}
因此,您的应用程序上下文将如下所示:
<bean id="userDao" class="my.package.UserDao">
<property name="findActiveUsers" value="FROM User u WHERE u.active=true"/>
</bean>