Odak modu

Java Spring

Many-To-Many Tablo İlişkisi

Bu yazıda tablo ilişkilerinden ve özellikle de many-to-many ilişkilerinden bahsedeceğiz. Many-to-many ilişkisi, bir tablonun diğer tabloya ait birden fazla öğe içerebilir. Bu öğeler de birden fazla ürüne ait olabilir. Bu tür verileri tutmak için genellikle bir aracı tabloya ihtiyaç duyulur.

İlk önce, örneğimize başlamadan önce Colors tablomuzu oluşturmamız gerekiyor. Colors tablosu için bir ID, bir adet Color adı ve bir boolean değer içeren bir private string alanına ihtiyacımız var. Bu tablonun ilişkili olduğu ürünleri tutmak için bir liste oluşturacağız ve bu listeye ColorList diyeceğiz.

@Entity
public class Colors {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  private String colorName;

  @OneToMany(mappedBy = "colors")
  private List<ProductColors> colorList;
}

Bu tablonun ardından many-to-many ilişkisini tanımlamak için ProductColors adında bir ara tabloya ihtiyacımız var. Bu tablo, Product ve Colors tabloları arasındaki ilişkiyi temsil eder.

@Entity
@Table(name = "ProductColors")
public class ProductColors {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  @ManyToOne
  @JoinColumn(name = "product_id")
  private Product product;

  @ManyToOne
  @JoinColumn(name = "color_id")
  private Colors colors;
}

Sonrasında, ilişkiyi tanımlamak için Product sınıfına many-to-many ilişkisi eklenir.

@Entity
public class Product {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  @ManyToMany
  @JoinTable(
    name = "ProductColors",
    joinColumns = @JoinColumn(name = "product_id"),
    inverseJoinColumns = @JoinColumn(name = "color_id"))
  private List<Colors> colorList;
}

Burada, @JoinTable anotasyonu kullanılarak ara tablo belirtilir ve hangi sütunların hangi anahtarlarla eşleştiği belirlenir.

Bu şekilde, many-to-many ilişkilerini yönetebilir ve veritabanında gerekli tabloları otomatik oluşturabilirsiniz. İlişkileri test etmek için gerekli verileri ekleyip, sorguları çalıştırabilirsiniz. Bu yöntemle, tablo ilişkilerini güncel tutabilir ve veritabanında tuttuğunuz verilere daha etkili bir şekilde erişebilirsiniz.

left-disk

Yazılım Kariyerinde İlerlemeni Hızlandıracak Programlar

Patika+ programlarımız ile 4-8 aylık yoğun yazılım kamplarına katıl, temel bilgilerden başlayarak kapsamlı bilgiler edin, yazılım kariyerine başla!

right-cube

Yorumlar

Yorum yapabilmek için derse kayıt olmalısın!