JPA (Java Persistence API)-07
Önceki yazımda Generated Value, Embeddable, Embeddable Attribute Override anotasyonlarından bahsetmiştim. Bu yazımda ise Element Collection anotasyonlarından bahsedeceğim.
Element Collection
- jpa.elementCollection adında bir maven projesi oluşturalım.
- src/main/java altına com.proje.model paketini ve onun da altına Personel sınıfını açıyoruz. Entityleri bu sınıfta tanımlayacağız. Sınıfımızın içeriği :
- Bir personelin birden fazla telefon numarası var ise aynı tabloda tutulamaz.
- Farklı bir tabloda personelin id’ sine karşılık telefon numarası tutulur.
- Personel tablosunda ise isim, soy isim, id, doğum tarihi tutulur.
- Test sınıfının içeriği :
- Birden fazla telefon numarası kayıt altına alınacağı için listeyle tutuyoruz. Listeyi de Test sınıfında yukarıda görülüğü gibi iki farklı şekilde kullanabiliriz.
- Veri tabanına göz atalım :
- phoneNumber tablomuz ise :
Element Collection — Collection Table
3. Collection Table’ da id ile telefon numarasının yeni bir tablosu oluşturulurken tablo ismini ve kolon ismin güncelleyebilme imkanı sunar
Get Fatma Aleyna Doğan’s stories in your inbox
Join Medium for free to get updates from this writer.
4. jpa.elementCollection_collectionTable adında yeni bir proje oluşturalım. Personel sınıfımıza birkaç değişiklik ekleyelim, işte sınıfın içeriği :
- @CollectionTable(name=”personel_phoneNumbers”,joinColumns=@JoinColumn(name=”personelId”)) kısmında id ile telefon numarasını tutacak olan tablonun ismini personel_phoneNumbers, ve id sütunun ismini personelId şeklinde revize ettik.
- private List<String> phoneNumbers=new ArrayList<String>(); boş bir liste entity’ si oluşturmuş olduk. Böylece test sınıfında sürekli kendimiz bir liste tanımlamak zorunda kalmayacağız.
- İşte Test sınıfın içeriği :
- Veri tabanına bir göz atalım :
Element Collection — List Address
5. jpa.elementCollection_listAddress adında yeni bir maven projesi açıyoruz.
6. src/main/java klasörünün altına ise com.proje.model paketini, onun altına ise Address adında bir sınıf açıyoruz. Gömülecek sınıfımızı burada tanımlayacağız. İşte sınıfın içeriği :
- Address sınıfının gömülebilir olduğunu belirttik.
7. User adında bir başka sınıf daha açıyoruz. İşte sınıfın içeriği :
- Bu sınıf sayesinde user ve user_address adında iki tablo oluşacak. Bazı sütunların ismini de revize ettik.
- Boş, Address türünde bir ArrayList oluşturduk böylece Test sınıfında sürekli tanımlamamız gerekmeyecek.
- Parametreli constructor’ da ise listeyi çağırmıyoruz zaten tanımladık.
8. Ve com.proje.test adında bir paket daha açıp altına da Test sınıfını oluşturuyoruz. İşte sınıfın içeriği :
9. user’ larımızın bilgilerini ve adreslerini doldurduk, tabloya ekleme işlemini gerçekleştirdik.
10. Veri tabanımıza bir göz atalım :
- user tablosu :
- user_address tablosu :
Böylece yazımın sonuna geldim, vakit ayırdığınız için teşekkürler..









