0

私はSTSでWebアプリケーションを作成しています。Spring3.1.0とHIbernate4.0.1のjarを使用しています。プロジェクトビルドパスにjarを含めています。DAOレイヤーでHibernateTemplateオブジェクトを作成しようとすると、インスタンス化されません。そこではnullです。なぜnullなのかわかりません。

以前、NoClassDefinitionFound:org.springframework.orm.hibernate3.HibernateTemplate ....のようなエラーが発生していました。次に、これらのjarファイルをWEB-INF-> libフォルダーに含めたところ、このエラーは削除されましたが、hibernateTemplateオブジェクトはnullのままです。プロジェクトフォルダ内のbeans.xmlの位置に関して問題はありますか??誰かが私を助けることができますか?

以下は私のbeans.xmlとUserinfo.javaのコードです。


[b] Beans.xml [/ b]

bean.xmlの関連部分のみ

<bean id="hibTemplateBean" class="org.springframework.orm.hibernate3.HibernateTemplate" >
    <property name="sessionFactory" ref="sfBean" />
</bean>

[b] UserinfoDao.java [/ b]

package com.home.dao;

import org.springframework.orm.hibernate3.HibernateTemplate;

import com.home.pojo.User;

public class UserinfoDao {

    public UserinfoDao() {

            super();

        }

    private static HibernateTemplate hibernateTemplate;

    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
        UserinfoDao.hibernateTemplate = hibernateTemplate;
    }

    public static void fetchUserInfo(){
        try{
            User user = (User)hibernateTemplate.get(User.class, 111);
        }catch(NullPointerException npe){
            npe.printStackTrace();
        }
    }
}

4

2 に答える 2

0

あなたのバージョンは、あなたが単にあなたのBeanにstaticメソッドでアクセスしていると私に信じさせます:

UserinfoDao.fetchUserInfo();

春の重要なポイントがいくつか欠けているようです。まず、staticメソッドとフィールドを使用しないでください。次のクラスを試してください。

public class UserinfoDao {

    private HibernateTemplate hibernateTemplate;

    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
        this.hibernateTemplate = hibernateTemplate;
    }

    public void fetchUserInfo(){
        try{
            User user = (User)hibernateTemplate.get(User.class, 111);
        }catch(NullPointerException npe){
            npe.printStackTrace();
        }
    }

}

次に、何らかの方法でSpringBeanのインスタンスを取得する必要があります。new UserinfoDao()単純に演算子を使用することはできません。BeanをXMLで宣言するか、アノテーションを介して宣言する必要があります(そして、への依存関係を宣言する必要がありますHibernateTemplate

最後に、通常はキャッチするべきではありませんNullPointerExceptionが、ddebuggingの目的でこれを理解しています。

于 2012-05-26T17:50:24.083 に答える
0

Hibernate 4を使用しておりorg.springframework.orm.hibernate3.HibernateTemplate、Hibernate3パッケージから使用しています。

このテンプレートはサポートされなくなりました。宣言型トランザクション管理を行うことができます。

于 2012-05-26T17:57:51.653 に答える