テキストとして保存された JSON のブロブを頻繁に使用する従来のデータベースを使用しています。この実装の詳細を隠し、データベースでの作業を容易にし、将来データベース スキーマをリファクタリングできるようにする JPA クラスを作成しようとしています。私の現在のアプローチは次のとおりです。
class MyTableObject{
@Lob
@Column(name = "stuff")
private String jsonString;
public List<Stuff> getStuff(){
return jsonToStuff(jsonString);
}
public setStuff(List<Stuff> stuff){
jsonString = stuffToJsonString(stuff);
}
}
ここでは、表現は常にデータベースとオブジェクトの両方で JSON 文字列として行われ、(これまでのところ) 動作しますが、オブジェクトの状態が変更されるたびに JSON を解析する必要があるため、かなり非効率的です。Stuff オブジェクトをメモリにキャッシュすることで現在のソリューションのパフォーマンスを向上できることを感謝していますが、セッターが呼び出されるたびにそれらを JSON にシリアル化し、状態の 2 つの表現 (オブジェクトと JSON) が確実に保持されるようにする必要があります。常に同期。私ができるようにしたいのは、次のように、途中でフィールドを変換するようにフレームワークに指示することです。
class MyTableObject{
private List<Stuff> stuff;
@Lob
@Column(name = "stuff")
public String getStuffAsJsonString(){
return stuffToJsonString(stuff);
}
@Column(name = "stuff")
public setStuffFromJsonString(String jsonString){
stuff = stuffFromJsonString(jsonString);
}
}
ただし、私の知る限り、注釈はゲッターでのみ有効です。オブジェクト内の 1 つの表現とデータベース内の別の表現を使用して、上記のようなことを達成できますか? 私は JPA を初めて使用するので、明らかな何かを簡単に見逃してしまう可能性があります。
よろしくお願いします