これはもっとコードですが、最終的にはそれに相当します。あなたのサービスがそのデータを「所有」すると想定されている場合、そのサービスはエンドユーザから抽象化された状態に保たれるべきです。これは、クライアントにAPIを与えることを意味します。 APIにはDTOと関数があります。データレイヤーには独自のモデルがあります。
時系列データの保存を開始する場合は、すべてのクライアントがそれを知る必要はありません。または、テーブルにフィールドを追加または削除する必要があります。あるいは、それほど頻繁にクエリを実行しないようにするために、派手な結合を書いておきたい。これらのすべてのことは、2つのオブジェクトセットがない場合は、ユーザー向けのAPIを変更することを意味します。
DTOとモデルのほかに、コンバータも必要です。あなたにとってラッキーですが、Spring
は、使用するパターン/クラスが用意されています。
import com.example.dto.LoginUserDto;
import com.example.model.LoginUser;
import org.springframework.core.convert.converter.Converter;
public class LoginUserDtoToLoginUserConverter
implements Converter <LoginUserDto, LoginUser> {
@Override
public LoginUser convert(LoginUserDto source) {
if (source == null) {
return null;
}
LoginUser target = new LoginUser();
target.setEmail(source.getEmail());
target.setPassword(source.getPassword());
return target;
}
}
楽しみはまだ終わっていません!モデルオブジェクトをに変換する必要があります。これは、オブジェクトをクライアントに返すときにDTOに変換されます。わーい!
import com.example.dto.LoginUserDto;
import com.example.model.LoginUser;
import org.springframework.core.convert.converter.Converter;
public class LoginUserToLoginUserDtoConverter
implements Converter <LoginUser, LoginUserDto> {
@Override
public LoginUserDto convert(LoginUser source) {
if (source == null) {
return null;
}
LoginUserDto target = new LoginUserDto();
target.setEmail(source.getEmail());
target.setPassword(source.getPassword());
return target;
}
}
美しいわけではありません。あまりにも多くの無駄。しかし、いいえ、これについて別の方法はありません。あなたは "ワイヤ"オブジェクトを保存するか、それらを変換します。
幸運のベスト。
JSONをPOJOに拡張しますか? –
これは設計上の選択ですが、どちらも技術的には同等ですが、上記の例で述べたように、POJOクラスからJSONクラスを継承することは妥当です。 –