JPA Ek Açıklamalarıyla Varlık Eşleme
Temiz bir varlık tasarımı için @Entity, @Table, @Id, @GeneratedValue, @Column ve @Embedded tanımlayın.
JPA Ek Açıklamalarıyla Varlık Eşleme, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.
JPA Varlık Eşlemesi Nedir?
JPA (Jakarta Persistence API), ek açıklamaları kullanarak Java sınıflarını veritabanı tablolarına eşler. Hibernate en yaygın JPA sağlayıcısıdır. SQL DDL gerekmez — JPA şemaları ek açıklamalardan oluşturur.
@Entity ve @Table
@Entity, bir sınıfı JPA varlığı olarak işaretler. @Table, tablo adını, şemayı ve benzersiz kısıtlamaları özelleştirir. Her varlığın bağımsız değişkensiz bir yapıcısı olmalıdır (protected olabilir).
@Entity
@Table(name = "users", uniqueConstraints = @UniqueConstraint(columnNames = "email"))
public class User {
// ...
protected User() {} // required by JPA
}@Id ve @GeneratedValue
@Id, birincil anahtar alanını işaretler. @GeneratedValue, otomatik oluşturma stratejisini yapılandırır: IDENTITY (veritabanı otomatik artırımı), SEQUENCE (veritabanı dizisi, toplu ekleme için daha iyidir) veya AUTO.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}@Column: Sütunları Özelleştirme
@Column, sütun adını, uzunluğunu, null değer alabilirliğini ve benzersizliğini belirler. Bu ek açıklama olmadan alan adı, sütun adı olur.
@Column(name = "full_name", nullable = false, length = 100)
private String name;
@Column(name = "email", unique = true, nullable = false)
private String email;
@Column(name = "created_at", updatable = false)
private LocalDateTime createdAt;@Embedded ve @Embeddable
Bir grup sütunu, @Embeddable ile ek açıklama eklenmiş yeniden kullanılabilir bir değer nesnesine çıkarın. Alanlarını varlığa dâhil etmek için varlıkta @Embedded kullanın.
@Embeddable
public class Address {
private String street, city, country;
@Column(name = "zip_code") private String zipCode;
}
@Entity
public class User {
@Embedded private Address address;
}@Enumerated: Enum'ları Kalıcı Hâle Getirme
Enum'ları ad dizeleri (STRING) veya sıra numarası tamsayıları (ORDINAL) olarak kalıcı hâle getirin. Her zaman STRING kullanın — enum değerleri yeniden sıralandığında sıra numaraları bozulur.
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private UserStatus status; // stored as "ACTIVE", "INACTIVE", etc.@CreationTimestamp ve @UpdateTimestamp
Ekleme ve güncelleme işlemlerinde zaman damgasını sırasıyla otomatik olarak ayarlayan Hibernate'e özgü ek açıklamalardır — elle @PrePersist kullanmanız gerekmez.
@CreationTimestamp
@Column(updatable = false)
private LocalDateTime createdAt;
@UpdateTimestamp
private LocalDateTime updatedAt;@Transient: Alanları Hariç Tutma
@Transient ile ek açıklama eklenmiş alanlar kalıcı hâle getirilmez. Veritabanında saklanmaması gereken türetilmiş veya hesaplanmış alanlar için kullanın.
@Transient
public String getFullName() { return firstName + " " + lastName; }@Lob: Büyük Nesneler
Büyük metin (TEXT/CLOB) veya ikili (BLOB) sütunlarını eşlemek için @Lob kullanın. PostgreSQL, @Lob String ifadesini TEXT olarak eşler.
@Lob
@Column(name = "content")
private String content; // maps to TEXT in PostgreSQLequals ve hashCode Sözleşmesi
Koleksiyonlardaki JPA varlıkları, iş anahtarını temel alan (equals / hashCode) uygulamalara sahip olmalıdır; kalıcı hâle getirilmeden önce null olan oluşturulmuş ID'yi temel almamalıdır. @NaturalId veya UUID tabanlı yedek anahtar kullanın.
@Override public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof User u)) return false;
return email != null && email.equals(u.email);
}
@Override public int hashCode() { return getClass().hashCode(); }İyimser Kilitleme için @Version
Bir @Version alanı ekleyin. Hibernate bu alanı her güncellemede artırır. İki işlem aynı satırı eşzamanlı olarak güncellerse ikincisi OptimisticLockException fırlatır.
@Version
private Long version; // auto-managed by HibernateHızlı Kontrol
@Enumerated neden ORDINAL yerine STRING kullanmalıdır?
Özet
Sınıf-tablo eşlemesi için @Entity/@Table kullanın. Birincil anahtarlar için @Id+@GeneratedValue kullanın. Kısıtlamalar için @Column kullanın. Değer nesneleri için @Embedded kullanın. Her zaman @Enumerated(STRING) kullanın. İyimser kilitleme için @Version ekleyin.
Sıkça Sorulan Sorular
“JPA Ek Açıklamalarıyla Varlık Eşleme” dersi ücretsiz mi?
Evet — “JPA Ek Açıklamalarıyla Varlık Eşleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.
“JPA Ek Açıklamalarıyla Varlık Eşleme” dersinde ne öğreneceğim?
Temiz bir varlık tasarımı için @Entity, @Table, @Id, @GeneratedValue, @Column ve @Embedded tanımlayın. Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“JPA Ek Açıklamalarıyla Varlık Eşleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- JPA Ek Açıklamalarıyla Varlık Eşleme
- Spring Data Depoları ve Sorgu Yöntemleri
- Bire-Çok ve Çoka-Çok İlişkileri
- Sayfalama, Sıralama ve Projeksiyonlar