2011-12-22 13 views
1

私は、SpringとHibernateを使用して継承したJava Webアプリケーションに取り組んでいます。このアプリケーションには、hbm2javaを使用して自動的に生成された永続クラスが含まれています。これらのクラスには、複数のパラメータ(典型的なデフォルトのコンストラクタ)を持つコンストラクタも含まれていました。これらのデフォルト以外のコンストラクタは、他のメソッドによって直接アクセスされることはありません。これらのクラスを呼び出すための明示的な春の定義はありません。したがって、それはデッドコードであると思われます。永続クラスの複数パラメータコンストラクタの理由は何ですか?

この質問は曖昧ですが、Hibernateが通常これらのコンストラクタ反射を通して?私はClass<T>.getInstance()を使ってオブジェクトの新しいインスタンスを作成するためにデフォルトのコンストラクタを呼び出すことを知っていますが、それはそれについてです...

答えて

1

いいえ、休止状態で使用されるため、これらは存在しません。

このタイプのコンストラクタは、エンティティクラスをインスタンス化して初期化するときに便利なことがよくあります。デフォルトコンストラクタを使用して複数のsetterを呼び出す代わりに、複数のパラメータを取るコンストラクタを使用する方が簡単です。

+0

問題は、Hibernateがコンストラクタのパラメータをあるコード生成から別のコード生成にスワップできることです。ちょうど私と同僚に起こった。 – NobleUplift

0

あなたのdbを見てください。通常、hibernateは、データベース内のすべての列のコンストラクタを作成し、次にすべての必須フィールドのコンストラクタを作成します。

+0

"hibernateがコンストラクタを作成する"?どうやって? –

+0

Eclipse用のhibernateプラグインを使用してエンティティオブジェクトをリバースエンジニアリングすると、複数のコンストラクタが存在します。これは、私が '永続性'のクラスが問題ではないと仮定したものです。彼はそれが少し曖昧だと述べたので、私はショットを取った! – Mick

+0

DBテーブルをリバースエンジニアリングすることで実際にこれらのエンティティを生成しているのはプラグインだと思います。 –

関連する問題