Leichte Alternative zum Ruhezustand? [geschlossen]

112

Ich habe ein Java-Programm für Einzelbenutzer, bei dem ich Daten in einer leichten Datenbank wie Derby oder Sqlite speichern möchte. Ich möchte eine Datenabstraktionsschicht in meinem Programm verwenden. Der Ruhezustand scheint viel Konfiguration zu erfordern und ist übertrieben für das, was ich brauche. Was sind leichte Alternativen zu Hibernate?

Jared
quelle
2
Sie können Alternativen zusammen mit der Beispielnutzung (und der Beispielkonfiguration mit Spring) hier überprüfen: github.com/bwajtr/java-persistence-frameworks-comparison
Břetislav Wajtr
CMobileCom JPA ist eine leichte JPA-Implementierung für Java und Android. Seine Größe beträgt ca. 380K. Es ist leicht und schnell. cmobilecom.com
John

Antworten:

142

Für den Ruhezustand ist eine Konfiguration nahe Null erforderlich, wenn Sie Anmerkungen verwenden. Es kann sogar zugeordnete Beans im Klassenpfad automatisch erkennen! Ich sehe keine Alternative dazu, sowohl in Bezug auf die Einfachheit als auch in Bezug auf die Leistung.

Es kann sich auch als JPA ausstellen, was (IMHO) noch einfacher ist.

Vladimir Dyuzhev
quelle
32
neben Null ist nicht Null.
NJZK2
12
Außerdem braucht es viele externe Bibliotheken, die versuchen, es auf Android zu verwenden: P
Sherif
4
Ich habe versucht, eine einfachere Alternative zu Hibernate zu finden. In einem persönlichen Projekt habe ich MyBatis verwendet (was für ein schrecklicher Name). Es war viel mehr Arbeit als Hibernate. Der Ruhezustand spart wirklich viel SQL-Codierung und hilft bei Eltern-Kind-Beziehungen. Ich habe mir auch einige ORMs im ActiveRecord-Stil für Java angesehen. Keiner schien reifer oder einfacher als der Winterschlaf. Also gehe ich zurück in den Ruhezustand.
Devdanke
56
Ging es bei der Frage nicht um eine ALTERNATIVE?
Łukasz Gruner
8
Hibernate ist keine leichte Alternative zu Hiberernate
cosbor11
55

Meine ORMLite- Bibliothek ist eine solche Alternative. Es unterstützt MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB und SQLite und kann problemlos auf andere erweitert werden. Es verwendet Anmerkungen zum Konfigurieren von Klassen, eine gute Spring-Unterstützung, einen flexiblen Abfrage-Generator usw.

Grau
quelle
OrmLite sieht wirklich vielversprechend aus! Aber lebt dieses Projekt noch? Seit über einem Jahr keine neue Version, keine Antwort auf Anfragen / Probleme bei Github.
Stefan
3
Version 5.0 wurde im Juni 2016 veröffentlicht.
Lauri Laanti
Version 5.1 wurde am 19.02.2008 veröffentlicht. Ist aber überhaupt nicht mit Hibernate vergleichbar und einige JPA-Annotation-Implementierungen funktionieren nicht richtig.
M-Razavi
"vergleichbar mit Hibernate"? Sie sind beide ORMs, aber ansonsten sehr unterschiedlich. In Bezug auf JPA-Implementierungen füllen Sie bitte einen Fehlerbericht aus, wenn Sie etwas @ M-Razavi finden.
Grau
31

Es erfordert noch eine XML-Konfiguration, aber schauen Sie sich MyBatis (früher iBatis) an .

kgiannakakis
quelle
iBatis ist sehr leicht. Sie können die Zuordnung von SQL zu Objekt einfacher definieren und steuern.
Berlin Brown
... müssen für iBatis abstimmen, obwohl es keine ORM-Alternative ist, da es nicht versucht, mit Leuten wie Hibernate zu konkurrieren. Es ist eine etwas andere Art von Tier, passt aber in Bezug auf das Gewicht zu dem, was Sie suchen.
Vektor
1
Jetzt ist MyBatis übrig: mybatis.org
Vladislav Rastrusny
3
Ich denke, das XML in i / MyBatis ist tatsächlich ein Vorteil, da es komplizierte Abfragen in einem Format enthält, das zum Testen einfach auf eine SQL-Konsole kopiert werden kann.
Peter Tillemans
22

jOOQ wird mit einem fließenden DSL ausgeliefert, das SQL direkt in Java simuliert, als Nebeneffekt für seine Hauptziele:

  • Quellcode-Generierung
  • Volle Unterstützung für Standard-SQL, einschließlich SQL-Sprachfunktionen wie UNIONs, verschachtelte SELECTs, alle Arten von JOINs, Aliasing (z. B. für Self-Joins) usw.
  • Umfassende Unterstützung für nicht standardmäßiges SQL, einschließlich UDTs, gespeicherter Prozeduren, herstellerspezifischer Funktionen usw.

Lesen Sie mehr über jOOQ in diesem Artikel: http://java.dzone.com/announcements/simple-and-intuitive-approach oder besuchen Sie die Website direkt: http://www.jooq.org

(Haftungsausschluss, ich arbeite für die Firma hinter jOOQ)

Lukas Eder
quelle
3
JOOQ rockt! Wir haben damit einen umfangreichen ETL-Service implementiert und könnten nicht zufriedener sein. Ich habe iBATIS verwendet, und jOOQ bietet dieselben Vorteile von Low-Level-SQL ohne die Unmengen an XML und mangelnde Typensicherheit.
Spieden
3
Ich habe vergessen, eine der besten Funktionen von jOOQ zu erwähnen: Komplexe und / oder dynamisch generierte Abfragen können auf kontrollierte Weise zusammengestellt und vom Java-Compiler überprüft werden, um Sie vor all den mehrdeutigen Syntaxfehlerdatenbanken zu bewahren und eine Regression zur Kompilierungszeit bereitzustellen Abdeckung für den Fall, dass sich das Schema unter Ihnen ändert.
Spieden
JOOQ ist erstaunlich, aber offensichtlich ist es jetzt für Oracle und Sybase nicht kostenlos, so dass viele Leute dieses Framework meiden und wie MyBatis
Makky
@ Makky: Danke für dein Feedback. Ich hoffe, dass Sie die tatsächlichen Wertversprechen im Auge behalten und nicht zu einem völlig anderen Rahmen wechseln, nur weil einer frei ist und der andere nicht. Die Kosten für Wartung und Migration, die dies in Ihrer Software verursachen würde, sind unerschwinglich und gehen weit über jede vernünftige kommerzielle Lizenz hinaus ...
Lukas Eder
15

Apache Commons DBUtils nimmt einen Großteil der sich wiederholenden Arbeit aus der JDBC-Programmierung. Es erfordert wenig Konfiguration und ist leicht zu erlernen. Es ist kein ORM-Framework (so wie Hibernate und andere hier erwähnte Frameworks), aber es automatisiert die Zuordnung von SELECT-Spalten zu Java-Mitgliedsfeldern sowie anderen sich wiederholenden JDBC-Programmieraufgaben. Es ist sicherlich leicht.

Christopher Graziano
quelle
12

Sie können sich Ebean ORM ansehen . - Keine Sitzungen - Lazy Loading funktioniert einfach - Einfachere API zum Verwenden und Lernen.

rauben
quelle
ist es kompatibel mit SQLite und Android?
Endryha
SQLite-Unterstützung wurde hinzugefügt. Ich habe es noch nicht auf Android ausprobiert.
Rob Bygrave
9

Cayenne hat mir gute Dienste geleistet. Relativ einfach zu verstehen und in Betrieb zu nehmen. Ich finde den Reverse Engineering-Teil besonders reizvoll. Die Konfiguration kann mit einer GUI erfolgen.

Benno Richters
quelle
6

Ich kann Apache Empire-DB vorschlagen. http://incubator.apache.org/empire-db/

Apache Empire-db ist eine relationale Open Source-Datenpersistenzkomponente, die eine vom Datenbankanbieter unabhängige dynamische Abfragedefinition sowie ein sicheres und einfaches Abrufen und Aktualisieren von Daten ermöglicht. Im Vergleich zu den meisten anderen Lösungen wie z. B. Hibernate-, TopLink-, iBATIS- oder JPA-Implementierungen verfolgt Empire-db einen völlig anderen Ansatz, wobei der Schwerpunkt auf der Sicherheit während der Kompilierung , reduzierten Redundanzen und einer verbesserten Entwicklerproduktivität liegt.

Ein Beispiel:

// 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
quelle
2

Ich bin vielleicht etwas spät dran , aber ich habe 2010 ActiveJDBC veröffentlicht , eine ORM-Implementierung des ActiveRecord-Musters, das in Abhängigkeiten mehr als zehnmal leichter als Hibernate ist, zur Laufzeit mindestens doppelt so schnell ist und keine Konfiguration erfordert oder Anmerkungen.

ipolevoy
quelle
1

Vielleicht möchten Sie einen Blick auf prevayler (auf sourceforge) werfen. Ein etwas leichterer Ansatz für die Persistenz. Oder haben Sie darüber nachgedacht, gegen die DB zu berichten?

Stephan Eggermont
quelle
1

Wenn die Verwendung einer relationalen Datenbank nicht obligatorisch ist, probieren Sie db4o aus.

Behrang Saeedzadeh
quelle
1

Ich habe Sormula als Alternative zu ORMs im Schwergewicht entwickelt. Es ist CRUD-fähig, POJO-freundlich, einfach zu bedienen, zu konfigurieren und zu verstehen. Die Verwendung ohne Konfiguration ist möglich. www.sormula.org

Jeff Miller
quelle
-2

Kiteframework ist auch ein sehr leichtes Orm-Framework. Es bietet fast den gesamten Datenbankbetrieb mit minimalen Konfigurationen.

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

Offenlegung: Ich bin der Autor dieses Projekts

DeipakGarg
quelle
3
Willkommen bei Stack Overflow! Vielen Dank für Ihre Antwort! Bitte lesen Sie die FAQ zur Eigenwerbung sorgfältig durch. Beachten Sie auch , dass Sie jedes Mal, wenn Sie auf Ihre eigene Website / Ihr eigenes Produkt verlinken, einen Haftungsausschluss veröffentlichen müssen.
Andrew Barber
2
Es ist nicht in der Entwicklung, keine neue aktuelle Version des Autors, letzte erwartete Veröffentlichung war im Jahr 2012.
Barun