0

私は、Spring で Web アプリケーションを開発し、Eclipse で Hibernate を開発しています。Hibernate クエリまたは Sql クエリをプロパティ ファイルに保存し、後で DAO で使用したいと考えています。これを行う方法を教えてください。一般的な DAO を使用していますが、一般的なクエリを作成する方法はありますか? 後で、ページのリンク、タイトルなどの他のものをプロパティファイルにも保存したいと思います。

つまり、基本的に相互に関連する 3 つの質問です。

一般的なクエリを作成する方法が思いつかなかったので、具体的なクラスで 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();

    }


}
4

1 に答える 1

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>
于 2013-08-24T12:49:45.057 に答える