Saya memiliki program java pengguna tunggal yang saya ingin menyimpan data dalam database ringan seperti Derby atau Sqlite. Saya ingin menggunakan lapisan abstraksi data dalam program saya. Hibernate tampaknya membutuhkan banyak konfigurasi dan berlebihan untuk apa yang saya butuhkan. Apa sajakah alternatif ringan untuk Hibernate?
CMobileCom JPA adalah implementasi JPA ringan untuk Java dan Android. Ukurannya sekitar 380K. Ringan dan cepat. cmobilecom.com
Yohanes
Jawaban:
142
Hibernate memerlukan konfigurasi hampir nol jika Anda menggunakan anotasi. Ia bahkan dapat menemukan kacang yang dipetakan secara otomatis di classpath! Saya tidak melihat alternatif apa pun untuk itu dari sudut pandang kesederhanaan dan kekuatan.
Itu juga dapat mengekspos dirinya sebagai JPA, yang (IMHO) bahkan lebih sederhana.
juga membutuhkan banyak perpustakaan eksternal mencoba menggunakannya di android: P
sherif
4
Saya mencoba mencari alternatif yang lebih sederhana untuk Hibernate. Dalam proyek pribadi, saya menggunakan MyBatis (nama yang mengerikan). Itu jauh lebih banyak pekerjaan daripada Hibernate. Hibernate benar-benar menghemat banyak pengkodean SQL dan membantu hubungan orang tua-anak. Saya juga melihat beberapa ORM gaya ActiveRecord untuk Java. Tidak ada yang tampak dewasa atau lebih mudah daripada Hibernate. Jadi, saya akan kembali ke mode Hibernate.
devdanke
56
bukankah pertanyaannya tentang ALTERNATIF?
Łukasz Gruner
8
Hibernate bukanlah alternatif ringan untuk Hiberernate
cosbor11
55
Perpustakaan ORMLite saya adalah salah satu alternatif tersebut. Ini mendukung MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB, dan Sqlite, dan dapat dengan mudah diperluas ke orang lain. Ini menggunakan anotasi untuk mengonfigurasi kelas, dukungan Spring yang baik, pembuat kueri yang fleksibel, dll ..
OrmLite benar-benar terlihat menjanjikan! Tapi apakah proyek ini masih berjalan? Tidak ada versi baru selama lebih dari setahun, tidak ada jawaban untuk menarik permintaan / masalah di Github.
Stefan
3
Versi 5.0 dirilis pada Juni 2016.
Lauri Laanti
Versi 5.1 dirilis pada 2/19/2018. Tetapi tidak sebanding dengan Hibernate sama sekali dan beberapa implementasi anotasi JPA tidak berfungsi dengan baik.
M-Razavi
"sebanding dengan Hibernate"? Keduanya adalah ORM tetapi sangat berbeda. Dalam hal implementasi JPA, mohon isi laporan bug jika Anda menemukan sesuatu @ M-Razavi.
iBatis sangat ringan. Anda dapat dengan lebih mudah menentukan dan mengontrol SQL Anda ke pemetaan objek.
Berlin Brown
... harus memberikan suara untuk iBatis, meskipun ingat itu bukan alternatif ORM karena tidak mencoba bersaing dengan orang seperti Hibernate. Ini jenis hewan yang sedikit berbeda, tetapi beratnya sesuai dengan apa yang Anda cari.
Saya pikir XML di i / MyBatis sebenarnya merupakan keuntungan karena menyimpan pertanyaan rumit dalam format yang dapat dengan mudah disalin ke konsol SQL untuk pengujian.
Peter Tillemans
22
jOOQ dikirimkan dengan DSL fasih yang mensimulasikan SQL secara langsung di Java sebagai efek samping untuk tujuan utamanya yaitu:
Pembuatan kode sumber
Dukungan penuh untuk SQL standar termasuk fitur bahasa SQL seperti UNION, SELECT bersarang, semua jenis JOIN, aliasing (misalnya untuk self-join), dll
Dukungan luas untuk SQL non-standar termasuk UDT, prosedur tersimpan, fungsi khusus vendor, dll.
jOOQ batu! Kami menerapkan layanan ETL berskala besar dengannya, dan sangat bahagia. Saya telah menggunakan iBATIS, dan jOOQ memberikan semua keuntungan yang sama dari SQL tingkat rendah tanpa rim XML dan kurangnya keamanan tipe.
spieden
3
Saya lupa menyebutkan salah satu fitur terbaik dari jOOQ: Kueri yang kompleks dan / atau yang dihasilkan secara dinamis dapat dirakit dengan cara yang terkontrol dan diverifikasi oleh kompiler Java, menyelamatkan Anda dari semua kesalahan database kesalahan sintaks yang ambigu, dan menyediakan regresi waktu kompilasi perlindungan saat skema berubah di bawah Anda.
spieden
JOOQ luar biasa tetapi jelas sekarang tidak gratis untuk Oracle dan Sybase sehingga banyak orang menghindari kerangka kerja ini dan menggunakan seperti MyBatis
Makky
@ Makky: Terima kasih atas tanggapan Anda. Saya berharap Anda mengingat proposisi nilai aktual, dan Anda tidak akan beralih ke kerangka kerja yang sama sekali berbeda hanya berdasarkan fakta bahwa yang satu gratis dan yang lainnya tidak. Biaya pemeliharaan dan migrasi yang akan diakibatkan oleh perangkat lunak Anda sangat mahal dan jauh melampaui lisensi komersial yang masuk akal ...
Lukas Eder
15
Apache Commons DBUtils menghilangkan banyak pekerjaan kasar yang berulang-ulang dari pemrograman JDBC. Ini membutuhkan sedikit konfigurasi dan mudah dipelajari. Ini bukan kerangka ORM (dengan cara Hibernate dan kerangka kerja lain yang disebutkan di sini) tetapi itu mengotomatiskan pemetaan kolom SELECT ke bidang anggota Java serta tugas pemrograman JDBC berulang lainnya. Ini tentu ringan.
Dukungan SQLite telah ditambahkan. Saya belum mencobanya di Android.
Rob Bygrave
9
Cayenne telah melayaniku dengan baik. Relatif mudah untuk dipahami dan untuk memulai serta menjalankannya. Menurut saya, bagian reverse engineering sangat menarik. Konfigurasi dapat dilakukan dengan GUI.
Apache Empire-db adalah komponen persistensi data relasional Sumber Terbuka yang memungkinkan definisi kueri dinamis independen vendor database serta pengambilan dan pembaruan data yang aman dan sederhana. Dibandingkan dengan kebanyakan solusi lain seperti implementasi Hibernate, TopLink, iBATIS atau JPA, Empire-db mengambil pendekatan yang sangat berbeda, dengan fokus khusus pada keamanan waktu kompilasi , pengurangan redundansi dan peningkatan produktivitas pengembang.
Sebuah contoh:
// Define the queryDBCommand cmd = db.createCommand();DBColumnExpr EMPLOYEE_FULLNAME= db.EMPLOYEES.LASTNAME.append(", ").append(db.EMPLOYEES.FIRSTNAME).as("FULL_NAME");// Select required columns
cmd.select(db.EMPLOYEES.EMPLOYEE_ID, EMPLOYEE_FULLNAME);
cmd.select(db.EMPLOYEES.GENDER, db.EMPLOYEES.PHONE_NUMBER);
cmd.select(db.DEPARTMENTS.NAME.as("DEPARTMENT"));
cmd.select(db.DEPARTMENTS.BUSINESS_UNIT);// Set Joins
cmd.join(db.EMPLOYEES.DEPARTMENT_ID, db.DEPARTMENTS.DEPARTMENT_ID);// Set contraints and order
cmd.where(EMP.LASTNAME.length().isGreaterThan(0));
cmd.orderBy(EMP.LASTNAME);;
Saya mungkin sedikit terlambat ke pesta, tetapi saya merilis ActiveJDBC pada tahun 2010, yang merupakan implementasi ORM dari pola ActiveRecord, lebih dari 10 kali lebih ringan daripada Hibernate dalam dependensi, setidaknya dua kali lebih cepat pada waktu proses, dan tidak memerlukan konfigurasi. atau anotasi.
Anda mungkin ingin melihat prevayler (di sourceforge). Pendekatan ketekunan yang agak lebih ringan. Atau apakah Anda berpikir untuk melakukan pelaporan terhadap DB?
Saya membuat sormula sebagai alternatif dari ORM kelas berat. Ini siap CRUD, ramah POJO, mudah digunakan, dikonfigurasi, dan dipahami. Penggunaan tanpa konfigurasi dimungkinkan. www.sormula.org
Selamat datang di Stack Overflow! Terima kasih telah memposting jawaban Anda! Harap pastikan untuk membaca FAQ tentang Promosi Mandiri dengan cermat. Perhatikan juga bahwa Anda diharuskan memposting disclaimer setiap kali Anda menautkan ke situs / produk Anda sendiri.
Andrew Barber
2
itu tidak dalam pengembangan, tidak ada rilis terbaru dari penulis, rilis yang diharapkan terakhir adalah pada tahun 2012.
Jawaban:
Hibernate memerlukan konfigurasi hampir nol jika Anda menggunakan anotasi. Ia bahkan dapat menemukan kacang yang dipetakan secara otomatis di classpath! Saya tidak melihat alternatif apa pun untuk itu dari sudut pandang kesederhanaan dan kekuatan.
Itu juga dapat mengekspos dirinya sebagai JPA, yang (IMHO) bahkan lebih sederhana.
sumber
Perpustakaan ORMLite saya adalah salah satu alternatif tersebut. Ini mendukung MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB, dan Sqlite, dan dapat dengan mudah diperluas ke orang lain. Ini menggunakan anotasi untuk mengonfigurasi kelas, dukungan Spring yang baik, pembuat kueri yang fleksibel, dll ..
sumber
Ini masih memerlukan konfigurasi XML, tetapi lihat MyBatis (sebelumnya iBatis) .
sumber
jOOQ dikirimkan dengan DSL fasih yang mensimulasikan SQL secara langsung di Java sebagai efek samping untuk tujuan utamanya yaitu:
Baca tentang jOOQ di artikel ini: http://java.dzone.com/announcements/simple-and-intuitive-approach , atau kunjungi situs webnya secara langsung: http://www.jooq.org
(Penafian, saya bekerja untuk perusahaan di belakang jOOQ)
sumber
Apache Commons DBUtils menghilangkan banyak pekerjaan kasar yang berulang-ulang dari pemrograman JDBC. Ini membutuhkan sedikit konfigurasi dan mudah dipelajari. Ini bukan kerangka ORM (dengan cara Hibernate dan kerangka kerja lain yang disebutkan di sini) tetapi itu mengotomatiskan pemetaan kolom SELECT ke bidang anggota Java serta tugas pemrograman JDBC berulang lainnya. Ini tentu ringan.
sumber
Anda dapat melihat Ebean ORM . - Tidak ada sesi - pemuatan lambat hanya berfungsi - API yang lebih sederhana untuk digunakan dan dipelajari.
sumber
Cayenne telah melayaniku dengan baik. Relatif mudah untuk dipahami dan untuk memulai serta menjalankannya. Menurut saya, bagian reverse engineering sangat menarik. Konfigurasi dapat dilakukan dengan GUI.
sumber
Saya bisa mengusulkan apache empire-db. http://incubator.apache.org/empire-db/
Apache Empire-db adalah komponen persistensi data relasional Sumber Terbuka yang memungkinkan definisi kueri dinamis independen vendor database serta pengambilan dan pembaruan data yang aman dan sederhana. Dibandingkan dengan kebanyakan solusi lain seperti implementasi Hibernate, TopLink, iBATIS atau JPA, Empire-db mengambil pendekatan yang sangat berbeda, dengan fokus khusus pada keamanan waktu kompilasi , pengurangan redundansi dan peningkatan produktivitas pengembang.
Sebuah contoh:
sumber
Kerangka ORMAN juga bagus. https://github.com/ahmetalpbalkan/orman
Dokumentasi: https://github.com/ahmetalpbalkan/orman/wiki
Perbandingan: https://github.com/ahmetalpbalkan/orman/wiki/Why-orman-is-better-than-other-orms-for-you%3F
sumber
Saya mungkin sedikit terlambat ke pesta, tetapi saya merilis ActiveJDBC pada tahun 2010, yang merupakan implementasi ORM dari pola ActiveRecord, lebih dari 10 kali lebih ringan daripada Hibernate dalam dependensi, setidaknya dua kali lebih cepat pada waktu proses, dan tidak memerlukan konfigurasi. atau anotasi.
sumber
Anda mungkin ingin melihat prevayler (di sourceforge). Pendekatan ketekunan yang agak lebih ringan. Atau apakah Anda berpikir untuk melakukan pelaporan terhadap DB?
sumber
Jika menggunakan database relasional tidak wajib, cobalah db4o.
sumber
Saya membuat sormula sebagai alternatif dari ORM kelas berat. Ini siap CRUD, ramah POJO, mudah digunakan, dikonfigurasi, dan dipahami. Penggunaan tanpa konfigurasi dimungkinkan. www.sormula.org
sumber
Kiteframework juga merupakan kerangka orm yang sangat ringan. Ini menyediakan hampir semua operasi db dengan konfigurasi minimal.
http://deipakgarg.github.com/Kite-ORM/
Pengungkapan: Saya penulis proyek ini
sumber