Alternatif ringan untuk Hibernate? [Tutup]

113

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?

Jared
sumber
2
Anda dapat memeriksa alternatif bersama dengan penggunaan contoh (dan contoh konfigurasi dengan Spring) di sini: github.com/bwajtr/java-persistence-frameworks-comparison
Břetislav Wajtr
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.

Vladimir Dyuzhev
sumber
32
di samping nol bukan nol.
njzk2
12
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 ..

Abu-abu
sumber
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.
Gray
31

Ini masih memerlukan konfigurasi XML, tetapi lihat MyBatis (sebelumnya iBatis) .

kgiannakakis
sumber
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.
vektor
1
Sekarang MyBatis yang tersisa: mybatis.org
Vladislav Rastrusny
3
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.

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)

Lukas Eder
sumber
3
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.

Christopher Graziano
sumber
12

Anda dapat melihat Ebean ORM . - Tidak ada sesi - pemuatan lambat hanya berfungsi - API yang lebih sederhana untuk digunakan dan dipelajari.

rampok
sumber
apakah itu kompatibel dengan SQLite dan Android?
endryha
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.

Benno Richters
sumber
6

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:

// Define the query
DBCommand 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);;
Somatik
sumber
2

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.

ipolevoy.dll
sumber
1

Anda mungkin ingin melihat prevayler (di sourceforge). Pendekatan ketekunan yang agak lebih ringan. Atau apakah Anda berpikir untuk melakukan pelaporan terhadap DB?

Stephan Eggermont
sumber
1

Jika menggunakan database relasional tidak wajib, cobalah db4o.

Behrang Saeedzadeh
sumber
1

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

Jeff Miller
sumber
-2

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

DeipakGarg
sumber
3
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.
Barun