私はAddressのようなエンティティを持っています。パフォーマンスの問題のため、私はエンティティ全体を "street; zip; city"のような単一のフィールドに保存したい。Hibernateで文字列の類似情報を保存するためのEnhancedUserTypeの記述、SQLインジェクションの回避
EnhancedUserTypeを作成してこれを行うことができます。私が見つけたいくつかの例ではと方法「objectToSQLStringを」休止状態のソースに、常にそのように実装されています。メソッドはSQL表現を返すかどう私は、理解していない
@Override
public String objectToSQLString(Object object) {
if (object != null) {
Address oo = (Address)object;
return "'" + oo.toSomeString() + "'";
} else {
return "";
}
}
。 [']のような特殊記号が文字列の中でエスケープされないのはなぜですか?どのように私はそれらを逃れるべきですか?標準的なSQL方法は['] - > [' ']ですが、いくつかの方言では[バックスラッシュ]もエスケープする必要があります。
私はdialectに依存してエスケープすることができるいくつかのHibernateユーティリティはありますか? Hibernate自体はこの問題をどのように解決しますか?私はソースコードでそれを見つけることができませんでした:-(
[コンポーネントマッピング](http://docs.jboss.org/hibernate/core/3.3/reference/en/html/components.html)? – millimoose
JDBCプリペアドステートメントだけでは使えない理由は何ですか? – ChadNC
私はいつもPrepared Statementを使いますが、Hibernateはこのメソッドを含むEnhancedUserTypeを実装したいと思っています。 – 30thh