Alternativa leggera a Hibernate? [chiuso]


113

Ho un programma Java per utente singolo che vorrei archiviare i dati in un database leggero come Derby o Sqlite. Vorrei utilizzare un livello di astrazione dei dati nel mio programma. Hibernate sembra richiedere molta configurazione ed è eccessivo per quello che mi serve. Quali sono le alternative leggere a Hibernate?


2
Puoi controllare le alternative insieme all'uso di esempio (e configurazione di esempio con Spring) qui: github.com/bwajtr/java-persistence-frameworks-comparison
Břetislav Wajtr

CMobileCom JPA è un'implementazione JPA leggera per Java e Android. La sua dimensione è di circa 380K. È leggero e veloce. cmobilecom.com
John

Risposte:


142

Hibernate richiede una configurazione prossima allo zero se si utilizzano annotazioni. Può persino rilevare automaticamente i bean mappati nel classpath! Non vedo alcuna alternativa ad esso sia dal punto di vista della semplicità che del potere.

Può anche esporsi come JPA, che è (IMHO) ancora più semplice.


32
accanto a zero non è zero.
njzk2

12
inoltre ha bisogno di molte librerie esterne prova ad usarlo su android: P
sherif

4
Ho provato a trovare un'alternativa più semplice a Hibernate. In un progetto personale, ho usato MyBatis (che nome terribile). Era molto più lavoro di Hibernate. Hibernate salva davvero un sacco di codice SQL e aiuta con le relazioni genitore-figlio. Ho anche esaminato alcuni ORM in stile ActiveRecord per Java. Nessuno sembrava maturo o più facile di Hibernate. Quindi, torno a Hibernate.
devdanke

56
la domanda non riguardava un'alternativa?
Łukasz Gruner

8
Hibernate non è un'alternativa leggera a Hiberernate
cosbor11

55

La mia libreria ORMLite è una di queste alternative. Supporta MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB e Sqlite e può essere facilmente esteso ad altri. Utilizza le annotazioni per configurare le classi, un buon supporto Spring, un generatore di query flessibile, ecc.


OrmLite sembra davvero promettente! Ma questo progetto è ancora vivo? Nessuna nuova versione per oltre un anno, nessuna risposta a richieste / problemi di pull su Github.
Stefan

3
La versione 5.0 è stata rilasciata a giugno 2016.
Lauri Laanti

La versione 5.1 è stata rilasciata il 19/02/2018. Ma non è affatto paragonabile a Hibernate e alcune implementazioni di annotazioni JPA non funzionano correttamente.
M-Razavi

"paragonabile a Hibernate"? Sono entrambi ORM ma per il resto molto diversi. In termini di implementazioni JPA, compila una segnalazione di bug se trovi qualcosa @ M-Razavi.
Gray

31

Richiede ancora la configurazione XML, ma dai un'occhiata a MyBatis (ex iBatis) .


iBatis è molto leggero. È possibile definire e controllare più facilmente la mappatura da SQL a oggetto.
Berlin Brown

... devo votare per iBatis, anche se tieni presente che non è un'alternativa ORM in quanto non sta cercando di competere con come Hibernate. È un tipo di animale un po 'diverso, ma si adatta a quello che stai cercando in termini di peso.
vettore

1
Ora è MyBatis che rimane: mybatis.org
Vladislav Rastrusny

3
Penso che l'XML in i / MyBatis sia in realtà un vantaggio poiché mantiene query complicate in un formato che può essere facilmente copiato su una console SQL per i test.
Peter Tillemans,

22

jOOQ viene fornito con un DSL fluente che simula SQL direttamente in Java come effetto collaterale per i suoi obiettivi principali che sono:

  • Generazione del codice sorgente
  • Supporto completo per SQL standard comprese le funzionalità del linguaggio SQL come UNION, SELECT annidati, tutti i tipi di JOIN, aliasing (ad esempio per auto-join), ecc.
  • Ampio supporto per SQL non standard, inclusi UDT, stored procedure, funzioni specifiche del fornitore, ecc.

Leggi su jOOQ in questo articolo: http://java.dzone.com/announcements/simple-and-intuitive-approach , o visita direttamente il sito web: http://www.jooq.org

(Disclaimer, lavoro per l'azienda dietro jOOQ)


3
jOOQ rocce! Abbiamo implementato un servizio ETL su larga scala con esso e non potremmo essere più felici. Ho usato iBATIS e jOOQ offre tutti gli stessi vantaggi di SQL di basso livello senza le risme di XML e la mancanza di sicurezza dei tipi.
spieden

3
Ho dimenticato di menzionare una delle migliori caratteristiche di jOOQ: query complesse e / o generate dinamicamente possono essere assemblate in modo controllato e verificate dal compilatore Java, salvandoti da tutti quegli errori di sintassi ambigui che i database lanciano e fornendo una regressione in fase di compilazione copertura per quando lo schema cambia sotto di te.
spieden

JOOQ è fantastico ma ovviamente ora non è gratuito per Oracle e Sybase, quindi molte persone stanno evitando questo framework e stanno usando come MyBatis
Makky

@ Makky: grazie per il tuo feedback. Spero che tu stia tenendo a mente le proposte di valore effettive e che non passerai a un quadro completamente diverso solo in base al fatto che uno è gratuito e l'altro no. Il costo di manutenzione e migrazione che ciò indurrebbe nel tuo software è proibitivo e ben al di là di qualsiasi ragionevole licenza commerciale ...
Lukas Eder

15

Apache Commons DBUtils elimina gran parte del lavoro ripetitivo dalla programmazione JDBC. Richiede poca configurazione ed è facile da imparare. Non è un framework ORM (nel modo in cui Hibernate e altri framework qui menzionati sono) ma automatizza la mappatura delle colonne SELECT sui campi membri Java, nonché altre attività di programmazione JDBC ripetitive. È sicuramente leggero.


12

Puoi dare un'occhiata a Ebean ORM . - Nessuna sessione: il caricamento lento funziona e basta - API più semplice da usare e imparare.


è compatibile con SQLite e Android?
endryha

È stato aggiunto il supporto SQLite. Non l'ho ancora provato su Android.
Rob Bygrave

9

Cayenne mi ha servito bene. Relativamente facile da capire e da installare e funzionare. Trovo particolarmente affascinante la parte del reverse engineering. La configurazione può essere eseguita con una GUI.


6

Posso proporre apache empire-db. http://incubator.apache.org/empire-db/

Apache Empire-db è un componente di persistenza dei dati relazionali Open Source che consente la definizione di query dinamiche indipendenti dal fornitore di database, nonché il recupero e l'aggiornamento dei dati semplici e sicuri. Rispetto alla maggior parte delle altre soluzioni come ad esempio Hibernate, TopLink, iBATIS o implementazioni JPA, Empire-db adotta un approccio notevolmente diverso, con un'attenzione particolare alla sicurezza in fase di compilazione , ridondanze ridotte e maggiore produttività degli sviluppatori.

Un esempio:

// 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);;


2

Potrei essere un po 'in ritardo alla festa, ma ho rilasciato ActiveJDBC nel 2010, che è un'implementazione ORM del pattern ActiveRecord, è più di 10 volte più leggero di Hibernate nelle dipendenze, almeno due volte più veloce in fase di esecuzione e non richiede configurazione o annotazioni.


1

Potresti dare un'occhiata a prevayler (su sourceforge). Un approccio un po 'più leggero alla persistenza. O stavi pensando di fare reportistica contro il DB?



1

Ho creato sormula come alternativa agli ORM dei pesi massimi. È pronto per CRUD, compatibile con POJO, semplice da usare, configurare e capire. È possibile l'uso a configurazione zero. www.sormula.org


-2

Kiteframework è anche un framework orm molto leggero. Fornisce quasi tutte le operazioni db con configurazioni minime.

http://deipakgarg.github.com/Kite-ORM/

Divulgazione: sono l'autore di questo progetto


3
Benvenuto in Stack Overflow! Grazie per aver pubblicato la tua risposta! Assicurati di leggere attentamente le FAQ sull'autopromozione . Si noti inoltre che è necessario pubblicare un disclaimer ogni volta che si collega al proprio sito / prodotto.
Andrew Barber

2
non è in fase di sviluppo, nessuna nuova versione attuale dell'autore, l'ultima uscita prevista è stata nel 2012.
Barun
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.