0Pricing
Java Academy · Pelajaran

Pemetaan Entitas dengan Anotasi JPA

Tentukan @Entity, @Table, @Id, @GeneratedValue, @Column, dan @Embedded untuk desain entitas yang rapi.

Pemetaan Entitas dengan Anotasi JPA adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.

Apa Itu Pemetaan Entitas JPA?

JPA (Jakarta Persistence API) memetakan kelas Java ke tabel basis data menggunakan anotasi. Hibernate adalah penyedia JPA yang paling umum. Tidak diperlukan DDL SQL — JPA membuat skema dari anotasi.

@Entity dan @Table

@Entity menandai sebuah kelas sebagai entitas JPA. @Table menyesuaikan nama tabel, skema, dan batasan keunikan. Setiap entitas harus memiliki konstruktor tanpa argumen (boleh terlindungi).

@Entity
@Table(name = "users", uniqueConstraints = @UniqueConstraint(columnNames = "email"))
public class User {
    // ...
    protected User() {} // required by JPA
}

@Id dan @GeneratedValue

@Id menandai atribut kunci utama. @GeneratedValue mengatur strategi pembuatan otomatis: IDENTITY (kenaikan otomatis basis data), SEQUENCE (urutan basis data, lebih baik untuk penyisipan massal), atau AUTO.

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

@Column: Menyesuaikan Kolom

@Column mengatur nama kolom, panjang, boleh tidaknya bernilai null, dan keunikan. Tanpa anotasi ini, nama atribut menjadi nama kolom.

@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 dan @Embeddable

Ekstrak sekelompok kolom menjadi objek nilai yang dapat digunakan ulang dan diberi anotasi @Embeddable. Gunakan @Embedded dalam entitas untuk menyertakan atribut-atributnya.

@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: Menyimpan Enumerasi

Simpan enumerasi sebagai string namanya (STRING) atau bilangan bulat ordinal (ORDINAL). Selalu gunakan STRING — nilai ordinal rusak ketika nilai enumerasi diurutkan ulang.

@Enumerated(EnumType.STRING)
@Column(nullable = false)
private UserStatus status; // stored as "ACTIVE", "INACTIVE", etc.

@CreationTimestamp dan @UpdateTimestamp

Anotasi khusus Hibernate yang secara otomatis mengatur stempel waktu saat penyisipan dan pembaruan secara berurutan — tidak perlu menggunakan @PrePersist secara manual.

@CreationTimestamp
@Column(updatable = false)
private LocalDateTime createdAt;
@UpdateTimestamp
private LocalDateTime updatedAt;

@Transient: Mengecualikan Atribut

Atribut yang diberi anotasi @Transient tidak dipersistenkan. Gunakan untuk atribut turunan atau hasil perhitungan yang tidak boleh disimpan dalam basis data.

@Transient
public String getFullName() { return firstName + " " + lastName; }

@Lob: Objek Besar

Gunakan @Lob untuk memetakan kolom teks berukuran besar (TEXT/CLOB) atau biner (BLOB). PostgreSQL memetakan @Lob String ke TEXT.

@Lob
@Column(name = "content")
private String content; // maps to TEXT in PostgreSQL

Kontrak equals dan hashCode

Entitas JPA dalam koleksi harus mengimplementasikan equals / hashCode berdasarkan kunci bisnis (bukan ID yang dibuat otomatis, yang bernilai null sebelum disimpan). Gunakan @NaturalId atau kunci pengganti UUID.

@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(); }

@Version untuk Penguncian Optimistis

Tambahkan atribut @Version. Hibernate menaikkan nilainya setiap kali dilakukan pembaruan. Jika dua transaksi memperbarui baris yang sama secara bersamaan, transaksi kedua melempar OptimisticLockException.

@Version
private Long version; // auto-managed by Hibernate

Pemeriksaan Singkat

Mengapa @Enumerated sebaiknya menggunakan STRING, bukan ORDINAL?

Ringkasan

Gunakan @Entity/@Table untuk pemetaan kelas ke tabel. Gunakan @Id+@GeneratedValue untuk kunci utama. Gunakan @Column untuk batasan. Gunakan @Embedded untuk objek nilai. Selalu gunakan @Enumerated(STRING). Tambahkan @Version untuk penguncian optimistis.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pemetaan Entitas dengan Anotasi JPA” gratis?

Ya — teks lengkap “Pemetaan Entitas dengan Anotasi JPA” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pemetaan Entitas dengan Anotasi JPA”?

Tentukan @Entity, @Table, @Id, @GeneratedValue, @Column, dan @Embedded untuk desain entitas yang rapi. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Pemetaan Entitas dengan Anotasi JPA” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pemetaan Entitas dengan Anotasi JPA
  2. Repositori Spring Data dan Metode Kueri
  3. Relasi One-to-Many dan Many-to-Many
  4. Paginasi, Pengurutan, dan Proyeksi
← Kembali ke Java Academy