Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Memahami Dukungan Java untuk Kegigihan dengan JPA

Aplikasi perusahaan sering berurusan dengan operasi seperti pengumpulan, pemrosesan, transformasi, dan pelaporan sejumlah besar data. Data ini biasanya disimpan di server database di lokasi tertentu dan diambil sesuai permintaan. Aplikasi bertanggung jawab untuk memproses data dari database dan akhirnya menyajikannya untuk konsumsi klien. Namun, kerumitan yang terlibat dalam mengurangi pertukaran data antara arsitektur yang berbeda adalah tantangan nyata yang dihadapi pengembang. Inti masalahnya terletak pada kemudahan hubungan rumit pergerakan data antara kode yang digunakan untuk mengembangkan aplikasi dan model penyimpanan yang digunakan untuk persistensi data. Singkatnya, idenya adalah untuk menciptakan mekanisme interaksi tanpa batas antara dua model yang pantang menyerah:sifat berorientasi objek dari bahasa Java dan model basis data relasional.

API Dasar untuk Database

Platform Java sudah memiliki API standar untuk bekerja dengan sistem database dalam bentuk JDBC API. API ini sangat baik dalam bekerja dengan database dan menyediakan sarana yang diperlukan untuk berinteraksi dengan database dengan nyaman dari bahasa Java. Tapi, masalahnya adalah Java adalah bahasa berorientasi objek. JDBC menyediakan API inti untuk interaksi database dan tidak fokus dalam mengubah struktur baris dan kolom tabel database menjadi kelas entitas. Oleh karena itu, lapisan API dicari yang bekerja di atas JDBC API. Persistensi API, atau JPA, mengurangi dua model arsitektur yang berbeda dengan tujuan meningkatkan fluiditas operasi. API membantu merepresentasikan tabel relasi database sebagai POJO dan dapat diperlakukan dengan cara yang sama di seluruh kode Java. Inti JDBC API bekerja di latar belakang untuk menangani kerumitan komunikasi dan koneksi database sedangkan JPA memungkinkan transaksi dilakukan sesuai dengan kode berorientasi objek dari bahasa Java. Namun, pemetaan data antara database relasional dan Java bukanlah tugas yang mudah.

Dukungan Persistensi Java

Dalam database relasional yang khas, informasi disimpan dalam struktur baris dan kolom. Pertukaran data antara sistem database dan model objek aplikasi Java sulit karena Java menunjuk satu entitas sebagai kelas yang dilambangkan dengan seperangkat properti dan operasi yang diterapkan pada mereka. Oleh karena itu, untuk menyesuaikan ketidakcocokan perilaku antara dua arsitektur yang berbeda, seorang programmer Java harus menulis banyak baris kode. Baris kode ini membantu mengubah data baris dan kolom dari tabel database menjadi objek Java. Namun, seringkali baris kode ini menjadi terlalu berulang, sehingga kode sumber penuh dengan kode boilerplate. Ini tidak diinginkan dan melanggar prinsip dasar berorientasi objek yang dapat digunakan kembali. Meskipun kode pintar dapat mengurangi banyak kesulitan, itu bukan solusi yang mudah. Munculnya solusi pihak ketiga adalah jeda dalam pemetaan data database ke objek Java tetapi mereka tidak standar. Setiap implementasi vendor sangat bervariasi dari yang lain. Ini semua berarti bahwa situasi menuntut perpustakaan API persistensi standar dari platform Java itu sendiri. Hal ini menyebabkan pengenalan Java Persistence API (JPA), terutama untuk menjembatani kesenjangan antara model domain berorientasi objek Java dan sistem database.

Solusi Kepemilikan

Pahami bahwa solusi objek-relasional telah ada selama beberapa waktu, bahkan sebelum kelahiran bahasa Jawa itu sendiri. Misalnya, produk TopLink dari Oracle sebenarnya memulai dengan Smalltalk, dan kemudian beralih ke Java. Hari ini, ini adalah bagian dari server OracleAS, WebLogic, dan OC4J. Faktanya, dua API persistensi paling populer dulunya adalah Oracle's TopLink, standar kepemilikan di domain komersial, dan Hibernate di domain komunitas open source. Kemudian, Hibernate menjadi lebih populer dan sangat memengaruhi pembuatan perpustakaan JPA standar.

Pemeta Data

Pemeta data pada dasarnya adalah pola arsitektur yang diusulkan oleh Martin Fowler dalam bukunya Patterns of Enterprise Application Architecture , 2003. Ini menyediakan cara parsial untuk mengatasi masalah objek-relasional. Pemeta membantu menciptakan strategi yang termasuk dalam kategori antara JDBC biasa dan solusi pemetaan relasional objek yang berfungsi penuh. Di sini, pengembang aplikasi membuat string SQL mentah untuk memetakan tabel database ke objek Java dengan menggunakan metode data mapper. Ada kerangka kerja populer yang menggunakan teknik pemetaan antara database SQL dan objek Java, yang disebut Apache iBatis. Proyek Apache iBatis telah dinyatakan tidak aktif sekarang. Namun, pembuat asli Apache iBatis telah mentransfer proyek ke MyBatis dan sedang dalam pengembangan aktif.

Tidak seperti solusi masalah objek-relasional lainnya menggunakan kerangka data mappers seperti MyBatis, kita dapat memiliki kontrol penuh atas transaksi SQL dengan database. Ini adalah solusi yang ringan dan tidak membebani kerangka kerja ORM yang lengkap. Tapi, ada masalah dengan data mapper. Setiap perubahan yang dilakukan pada model objek memiliki dampak pada model data. Kita harus membuat perubahan signifikan pada pernyataan SQL secara langsung sebagai konsekuensinya. Sifat kerangka yang minimalis membantu pengembang memasukkan perubahan dan modifikasi baru sesuai kebutuhan. Pemeta data sangat berguna dalam situasi di mana kita membutuhkan kerangka kerja minimal, penanganan SQL eksplisit, dan lebih banyak kontrol untuk modifikasi pengembang.

JDBC

JDBC (Java Database Connectivity) adalah versi spesifik Java dari spesifikasi ODBC (Object Database Connectivity) Microsoft. ODBC adalah standar untuk menghubungkan basis data relasional apa pun dari bahasa atau platform apa pun. JDBC menyediakan abstraksi yang sama sehubungan dengan bahasa Java. JDBC menggunakan SQL untuk berinteraksi dengan database. Pengembang harus menulis kueri DDL atau DML sesuai dengan spesifikasi sintaksis dari database backend, tetapi memprosesnya menggunakan model pemrograman Java. Ada hubungan erat antara sumber Java dan pernyataan SQL. Kita dapat menggunakan pernyataan SQL mentah dan memanipulasinya secara statis sesuai kebutuhan. Karena sifatnya yang statis, sulit untuk memasukkan perubahan. Selain itu, dialek SQL bervariasi dari satu vendor database ke vendor lainnya. JDBC tertanam ke database dan bukan ke model objek bahasa Java. Oleh karena itu, segera terasa rumit untuk digunakan, terutama ketika interaksi basis data dari kode sumber Java meningkat. Namun, JDBC adalah dukungan utama untuk persistensi basis data di Java dan membentuk dasar untuk kerangka kerja tingkat tinggi.

EJB

Enterprise Java Bean (EJB) dengan J2EE membawa beberapa perubahan baru di arena persistensi Java dalam bentuk entity bean. Idenya adalah untuk mengisolasi pengembang dari intervensi langsung dengan seluk-beluk kegigihan database. Ini memperkenalkan pendekatan berbasis antarmuka. Ada kompiler kacang khusus untuk menghasilkan implementasi untuk ketekunan, manajemen transaksi, dan delegasi logika bisnis. Deskriptor penyebaran XML khusus digunakan untuk mengonfigurasi kacang entitas. Masalahnya adalah EJB, alih-alih menyederhanakan banyak hal, memasukkan banyak kerumitan. Akibatnya, meskipun banyak perbaikan berikutnya seperti pengenalan Enterprise JavaBeans Query Language (EJB QL), segera kehilangan popularitas.

Objek Data Java

JDO (Java Data Object) mencoba mengatasi masalah yang dihadapi oleh model persistensi EJB. Ini menyediakan API untuk ketekunan transparan dan dirancang untuk bekerja dengan EJB dan J2EE. JDO adalah produk yang sangat dipengaruhi dan didukung oleh database berorientasi objek. Objek ketekunan adalah objek Java biasa yang tidak memerlukan pengembang untuk mengimplementasikan kelas atau antarmuka khusus apa pun. Spesifikasi persistensi objek biasanya ditentukan dalam metafile XML. Bahasa kueri yang didukung bersifat berorientasi objek. Terlepas dari banyak fitur bagus, spesifikasi JDO tidak dapat diterima banyak kalangan komunitas pengembang.

API Persistensi Java

Ada sejumlah kerangka kerja persistensi berpemilik baik di domain komersial dan domain open source. Kerangka kerja seperti Hibernate dan TopLink tampaknya memenuhi kebutuhan aplikasi dengan cukup baik. Akibatnya, Hibernate dipilih sebagai dasar utama untuk membuat model persistensi standar yang disebut JPA.

JPA adalah kerangka kerja persistensi Java ringan standar yang membantu membuat pemetaan relasional objek menggunakan POJO. JPA juga membantu mengintegrasikan ketekunan ke dalam aplikasi perusahaan yang skalabel. Mudah digunakan karena hanya ada sejumlah kecil kelas yang perlu diekspos ke aplikasi yang tertarik menggunakan model persistensi JPA. Penggunaan POJO mungkin merupakan aspek JPA yang paling menarik. Artinya tidak ada yang istimewa dari objek tersebut; yang membuatnya bertahan. Pemetaan objek-relasional didorong oleh metadata. Itu dapat dilakukan baik dengan menggunakan anotasi secara internal di dalam kode atau secara eksternal. dengan menggunakan XML.

API persisten dari JPA ada sebagai lapisan terpisah dari objek persisten. Logika bisnis biasanya memanggil API dan meneruskan objek persisten untuk beroperasi di atasnya. Meskipun aplikasi mengetahui API persisten, objek persisten, yaitu POJO, sama sekali tidak menyadari kemampuan persistensinya.

Kesimpulan

Artikel ini memberikan gambaran umum tentang beberapa solusi eksklusif yang tersedia sebelum pengenalan JPA, seperti data mapper, JDBC, dan EJB. Idenya adalah untuk memberikan wawasan tentang apa yang menyebabkan terciptanya JPA, dan sedikit tentang teknik gigih pendahulunya. Tetap disini; artikel berikutnya membahas aspek yang lebih spesifik dari API JPA.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Alibaba Cloud

  2. Easysoft Rilis ODBC-ODBC Bridge untuk Windows 10

  3. Basis Data Deret Waktu Mana yang Lebih Baik:TimescaleDB vs InfluxDB

  4. Apakah Pencarian RID lebih cepat daripada Pencarian Kunci?

  5. Hitung SQL