Cara termudah Untuk Mengakses Database di JAVA

Feb 17 2023
Perbandingan antara Hibernate, JPA, EclipseLink, dan Spring Data JPA Apa itu ORM di Java? ORM adalah singkatan dari Object-Relational Mapping, dan itu adalah teknik yang digunakan di Java dan bahasa pemrograman lain untuk memetakan data yang disimpan dalam database relasional ke objek dalam bahasa pemrograman. Idenya adalah untuk menyediakan cara yang nyaman untuk mengakses dan memanipulasi data yang disimpan dalam database, tanpa harus menulis kode SQL.

Perbandingan antara Hibernate, JPA, EclipseLink, dan Spring Data JPA

Foto oleh Tobias Fischer di Unsplash

Apa itu ORM di Jawa?

ORM adalah singkatan dari Object-Relational Mapping , dan itu adalah teknik yang digunakan di Java dan bahasa pemrograman lain untuk memetakan data yang disimpan dalam database relasional ke objek dalam bahasa pemrograman. Idenya adalah untuk menyediakan cara yang nyaman untuk mengakses dan memanipulasi data yang disimpan dalam database, tanpa harus menulis kode SQL.

Framework JAVA ORM yang populer meliputi:

  • Hibernasi
  • Musim Semi Data JPA
  • JPA

Mari kita bahas satu sama lain lebih detail.

Ikhtisar: Java Persistence API (JPA)

Menyediakan spesifikasi untuk mempertahankan, membaca, dan mengelola data dari objek Java Anda ke tabel relasional di database. Kerangka kerja ini menyediakan API yang nyaman dan konsisten untuk melakukan operasi CRUD (Buat, Baca, Perbarui, Hapus) pada database dan mengelola hubungan antar objek. Ini dapat membantu mengurangi jumlah kode yang perlu ditulis, dan membuat kode lebih dapat dikelola dan lebih mudah dipahami.

Hibernasi vs JPA?

Hibernate adalah implementasi dari JPA, sedangkan JPA adalah spesifikasi ORM di Java. JPA mendefinisikan satu set API standar untuk mempertahankan data dalam database menggunakan objek Java, sementara Hibernate adalah implementasi spesifik dari API tersebut. Hibernate memiliki arsitektur yang lebih kuat daripada JPA, karena memungkinkan pengembang menyesuaikan proses ORM.

Berikut adalah contoh sederhana tentang bagaimana Anda dapat mempertahankan objek "Person" sederhana ke database menggunakan JPA dan Hibernate:

JPA

@Entity
public class Person {

    @Id
    @GeneratedValue
    private Long id;

    private String firstName;

    private String lastName;

    // Getters and setters omitted for brevity
}

// Persisting an entity using JPA
EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnitName");
EntityManager em = emf.createEntityManager();

em.getTransaction().begin();
Person person = new Person();
person.setFirstName("John");
person.setLastName("Doe");
em.persist(person);
em.getTransaction().commit();

em.close();
emf.close();

@Entity
public class Person {

    @Id
    @GeneratedValue
    private Long id;

    private String firstName;

    private String lastName;

    // Getters and setters omitted for brevity
}

// Persisting an entity using Hibernate
SessionFactory sessionFactory = new Configuration()
                                .configure()
                                .buildSessionFactory();
Session session = sessionFactory.openSession();

session.beginTransaction();
Person person = new Person();
person.setFirstName("John");
person.setLastName("Doe");
session.save(person);
session.getTransaction().commit();

session.close();
sessionFactory.close();

Musim Semi Data JPA vs JPA?

Spring Data JPA adalah kerangka kerja, sedangkan JPA adalah spesifikasi. Spring Data JPA adalah implementasi JPA default yang disebut Hibernate dengan spesifikasi yang disediakan sebagai bagian dari Spring Framework.

Berikut ini contoh menggunakan JPA:

@Entity
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String firstName;
    private String lastName;

    // Getters and setters ...
}

public class PersonDao {
    private EntityManager em;

    public PersonDao(EntityManager em) {
        this.em = em;
    }

    public void save(Person person) {
        em.getTransaction().begin();
        em.persist(person);
        em.getTransaction().commit();
    }

    public Person findById(Long id) {
        return em.find(Person.class, id);
    }
}

public interface PersonRepository extends JpaRepository<Person, Long> {
}

Anda juga dapat menggunakan PersonRepositoryuntuk melakukan operasi yang lebih kompleks hanya dengan mendeklarasikan metode dengan nama tertentu dan mengikuti konvensi penamaan. Spring Data JPA akan secara otomatis menghasilkan implementasi untuk Anda.

Seperti yang Anda lihat, cara tercepat untuk memetakan database di java adalah dengan menggunakan framework Spring Data JPA.

Ikhtisar: Hibernasi

Hibernate adalah framework object-relational mapping (ORM) open-source untuk bahasa pemrograman Java. Tujuan kerangka kerja ini adalah untuk membebaskan pengembang dari sejumlah besar data relasional, termasuk mengelola transaksi dan mengubah data dari representasi objek menjadi representasi relasional.

Hibernasi dapat digunakan dengan atau tanpa Java Persistence API (JPA), tetapi sering digunakan bersamaan dengan JPA untuk memberikan solusi lengkap untuk pemetaan objek-relasional dan persistensi dalam aplikasi Java.

Keuntungan

  • Framework ORM ini menyederhanakan proses penyimpanan dan pengambilan data dari database.
  • Memberikan lebih banyak fitur kinerja dan pengoptimalan, seperti pemuatan lambat yang dapat meningkatkan kinerja aplikasi Anda.
  • Memberikan solusi yang dapat diskalakan untuk persistensi dan pengelolaan data berskala besar.
  • Hibernasi dapat menjadi rumit untuk digunakan untuk hubungan yang kompleks, seperti pewarisan atau koleksi, yang dapat menyebabkan kesulitan dalam memetakan model objek ke model relasional.
  • Ini bisa bertele-tele, terutama saat menulis kueri, yang dapat membuat kode sulit dibaca dan dipelihara.

Kerangka kerja ini membawa konsep Repositori JPA, satu set Antarmuka yang mendefinisikan metode kueri . Anda tidak perlu lagi menulis terlalu banyak kueri. Spring Boot akan secara otomatis mengimplementasikan antarmuka repositori Anda, termasuk metode pencari khusus, saat Anda menulisnya.

Apa yang dapat Anda buat dengan Spring Data JPA:

  • Dukungan repositori: Spring Data JPA menyediakan pendekatan berbasis antarmuka untuk akses data. Anda cukup mendeklarasikan antarmuka yang diperluas JpaRepositorydan mendapatkan operasi dasar CRUD (Buat, Baca, Perbarui, Hapus)
  • Pembuatan kueri: menyediakan mekanisme untuk membuat kueri khusus
  • Penomoran dan Penyortiran
  • Transaksi: Spring Data JPA menyediakan manajemen transaksi otomatis, mudah dilakukan dengan anotasi @Transaksi sederhana

Ikhtisar: EclipseLink

EclipseLink adalah alat pemetaan objek-relasional (ORM) yang kuat yang merupakan bagian dari perkakas Java perusahaan Eclipse Foundation. Ini adalah open source dan cara yang baik untuk mulai belajar java. Tidak semudah Spring Data JPA tetapi Anda akan dapat lebih memahami apa yang terjadi di dalam aplikasi.

Mendukung banyak database yang bisa Anda pilih seperti Postgres, MySQL, dan MariaDB. Menawarkan fitur bermanfaat seperti pemuatan lambat dan tingkat performa tinggi serta memastikan skalabilitas aplikasi Anda.

Kelemahannya adalah mereka membutuhkan lebih banyak pengaturan dan konfigurasi daripada alat ORM lainnya.

Contoh implementasi EclipseLink sederhana :

EntityManagerFactory emf = Persistence.createEntityManagerFactory("default");
        EntityManager em = emf.createEntityManager();

        //  clear
        em.getTransaction()
                        .begin();
        em.createQuery("DELETE FROM Employee ").executeUpdate();
        em.getTransaction()
                       .commit();

        Employee e1 = new Employee("Costel", "Daniel", "0742929245", 21, Departament.Marketing, 2100.0);
        Employee e2 = new Employee("Daniel", "Costin", "0742929345", 26, Departament.IT, 4100.0);
        Employee e3 = new Employee("Codrin", "Daniel", "0742929245", 41, Departament.HumanResource, 3100.0);
   
        em.getTransaction()
                        .begin();
        System.out.println("Saving your new employees");
        em.persist(e1);
        em.persist(e2);
        em.persist(e3);
      
        em.getTransaction()
                    .commit();

        System.out.println("End");
    }

Jika Anda menggunakan JPA , Anda harus menulis sendiri kode yang diperlukan untuk mengimplementasikan sendiri logika persistensi. Namun dengan Spring Data JPA , sebagian besar logika persistensi diimplementasikan secara otomatis untuk Anda, sehingga Anda dapat berfokus pada penulisan logika bisnis aplikasi. Itu sebabnya Spring Data JPA lebih populer di kalangan pengembang karena mereka dapat fokus pada logika bisnis dan tidak menulis banyak kueri.

Kesimpulannya, saat Anda memilih alat ORM, penting untuk mempertimbangkan kebutuhan spesifik proyek Anda, termasuk jenis database yang ingin Anda gunakan dan kompleksitas model data Anda.

Selesai!

Nantikan lebih lanjut tentang topik ini!

Terima kasih sudah membaca!

Referensi