2017-03-23 6 views
0

私はJPAエンティティを以下のように持っています。テーブルに挿入する前にデータを消去する

Employee{ 

String name; 

String address; 

String phoneNumber; 

Date joiningDate; 

boolean isActive; 

} 

私たちはアドレスをテーブルに挿入悪いデータ、不正な文字のような名前を持っていることを見ています\改行character.Iあるu000bは、挿入する前にデータをクレンジングするために一般的にこれを処理します。 これは多くの場所から呼び出されるので、私は、私はその後、employee.merge();

+1

おそらくhttps://jsoup.org/cookbook/cleaning-htmlを参照してください。/whitelist-sanitizer –

+0

ありがとうございますが、ユーザーがREST APIから間違った値を入力する可能性がありますので、多数のエントリポイントがありますので、バックエンドで消毒してください。 – javascriptlearner

+0

既存のレコードをすべて削除して毎回新しく挿入しますか?または、あなたが言及した特定の悪いレコードだけを削除したいですか?または悪い文字を挿入しないものを探していますか? –

答えて

1

エンティティに@PrePersistまたは@PreUpdateでアノテーションされたメソッドを追加して、データをクリーンアップすることができます。このメソッドは、すべての挿入または更新の前に自動的に呼び出されます。

0

あなたドン」のない

employeeDao.save(employee); 

をやっているので、AOP のような一つの中央place.Some物で処理したいDAO層に対処したいですあなたのコードでこのロジックを処理する必要はありません。hibernateがこれを行うことができます。 hbm2ddl.autoプロパティをcreateに設定してhibernate.cfg.xmlにすると、アプリケーションを実行するたびにhibernateは既存のテーブルを削除し、新しいテーブルを作成します。新しいテーブルをもう作成したくない場合は、プロパティをupdateに設定します。これにより、hibernateはテーブルにデータを追加します。

<property name="hbm2ddl.auto">create</property> 
1

これは、プレゼンテーション層やビジネス層ではなく、データを検証するためのDAO /ドメイン層の責任ではありません。したがって、ビジネス層のクライアントまたはコントローラの1つのデータをチェックし、検証されたデータでドメイン層を呼び出す(またはEInvalidXXXX例外を投げる)。

関連する問題