29 Mayıs 2018 Salı

JPA @Embeddable Anotasyonu

Giriş
Bir tabloda çok fazla alan varsa ve sütunları mantıksal olarak bir nesne altında gruplamak uygunsa kullanırız. Embeddable nesnesindeki alanlar içinde bulunduğu nesnenin tablosuna yazılır.

Bu anotason ile @AttributeOverrides anotasyonu bolca beraber kullanılır.

Kullanım Şekli
En faydalı olduğu yer birden fazla sınıfa alan eklemek istersek kolayca yapabilmemizi sağlaması. Önce bir sınıf tanımlanıyor.
@Embeddable
class Audit {
  Timestamp created;
  String createdBy;
  String updatedBy;
}
Daha sonra sınıf Entity sınıfına ekleniyor.
@Entity
class Order {
   @Embedded
   Audit audit;
}
Kalıtım
Şöyle yaparız.
@MappedSuperclass
@Embeddable
public class Foo {
  //  atributes...
}

@Embeddable
public class Bar extends Foo {
  // atributes...
}

@Entity  
@Table
public class None {

  // atributes...

  @Embedded
  private Bar bar;

}
İç İçe @Embeddable
Şöyle yaparız. İlk Embeddable tanımlanır
@Embeddable
public class CourseId {
    private String club_id;
    private String course_id;
}
Bunu kullanan ikinci Embeddable tanımlanır.
@Embeddable
public class HoleId {
    private CourseId migCourseId;
    private int hole_num;
}
İkinci Embeddable composite key bile yapılabilir.
@Entity
@Table(name="hole_info")
public class Hole {
  @EmbeddedId
  private HoleId migHoleId;
  ...
}






Hiç yorum yok:

Yorum Gönder