サービス層に次のメソッド呼び出しがあります。
saveAdvertisement(childminderAdvertisement);
.. から次のメソッドを呼び出しますAdvertisementServiceImpl
。
public void saveAdvertisement(Advertisement advertisement) {
advertisementRepository.save(advertisement);
}
AdvertisementRepository
次のようにorg.springframework.data.jpa.repository.JpaRepository
パラメータ化されます。
JpaRepository<Advertisement, Long>;
ここに私のエンティティがあります:
Advertisement
:
@RooJavaBean
@RooToString
@RooEquals
@RooJpaEntity(inheritanceType = "TABLE_PER_CLASS")
@Entity
public abstract class Advertisement {
...
ChildminderAdvertisement
:
@RooJavaBean
@RooToString
@RooEquals
@RooJpaEntity
@Entity
public class ChildminderAdvertisement extends Advertisement {
...
AdvertisementRepository
(スーパークラス Advertisement で型パラメーター化されている) がインスタンスをChildminderAdvertisement
適切に保持していることに気付きました。
私の質問は 2 つあります。
- スーパークラスの JpaRepository を使用しているのに、Spring Data Jpa はサブクラスのインスタンスをどのように永続化しますか?
- スーパークラスを型パラメータとして使用することの欠点は何ですか?