web-dev-qa-db-fra.com

Alternative légère à Hibernate?

J'ai un seul utilisateur Java) dans lequel j'aimerais stocker des données dans une base de données légère telle que Derby ou Sqlite. J'aimerais utiliser une couche d'abstraction de données dans mon programme. Hibernate apparaît exiger beaucoup de configuration et est excessif pour ce dont j'ai besoin. Quelles sont les alternatives légères à Hibernate?

111
Jared

Hibernate nécessite une configuration proche de zéro si vous utilisez des annotations. Il peut même détecter automatiquement les beans mappés dans le classpath! Je ne vois aucune alternative à cela à la fois de simplicité et point de vue de la puissance.

Il peut également s'exposer sous le nom de JPA, qui est encore plus simple (à mon humble avis).

142
Vladimir Dyuzhev

Ma bibliothèque ORMLite est l'une de ces alternatives. Il supporte MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB et Sqlite, et peut facilement être étendu à d’autres. Il utilise des annotations pour configurer les classes, une bonne prise en charge de Spring, un générateur de requêtes flexible, etc.

54
Gray

Il nécessite toujours une configuration XML, mais jetez un oeil à MyBatis (anciennement iBatis) .

31
kgiannakakis

jOOQ est livré avec un DSL fluide simulant SQL directement dans Java comme effet secondaire pour ses objectifs principaux qui sont:

  • Génération de code source
  • Prise en charge complète de SQL standard, y compris des fonctionnalités de langage SQL telles que UNION, SELECT imbriquées, tous les types de JOIN, aliasing (par exemple, pour les jointures automatiques), etc.
  • Prise en charge étendue de SQL non standard, y compris les UDT, les procédures stockées, les fonctions spécifiques au fournisseur, etc.

Lisez à propos de jOOQ dans cet article: http://Java.dzone.com/announcements/simple-and-intuitive-approach , ou visitez le site Web directement: http: // www. jooq.org

(Avertissement, je travaille pour la société derrière jOOQ)

22
Lukas Eder

Apache Commons DBUtils élimine une grande partie du travail répétitif de la programmation JDBC. Il nécessite peu de configuration et est facile à apprendre. Ce n'est pas un framework ORM (comme Hibernate et les autres frameworks mentionnés ici), mais il automatise le mappage des colonnes SELECT sur des champs membres Java), ainsi que sur d'autres tâches de programmation JDBC répétitives. certainement léger.

14

Vous pouvez jeter un oeil à Ebean ORM . - Aucune session - le chargement paresseux ne fonctionne que - Une API plus simple à utiliser et à apprendre.

12
Rob

Cayenne m'a bien servi. Relativement facile à comprendre et à faire fonctionner. Je trouve la partie ingénierie inverse particulièrement charmante. La configuration peut être faite avec une interface graphique.

9
Benno Richters

Je peux proposer Apache empire-db. http://incubator.Apache.org/empire-db/

Apache Empire-db est un composant de persistance de données relationnelle Open Source qui permet la définition de requêtes dynamiques indépendante du fournisseur de bases de données, ainsi que la récupération et la mise à jour de données simples et sûres. Comparé à la plupart des autres solutions comme par exemple Implémentations Hibernate, TopLink, iBATIS ou JPA, Empire-db adopte une approche considérablement différente, avec un accent particulier sur la sécurité au moment de la compilation, redondances réduites et productivité accrue des développeurs.

Un exemple:

// 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);;
6
Somatik
2
AhmetB - Google

Je suis peut-être un peu en retard à la soirée, mais j’ai publié ActiveJDBC en 2010, qui est une implémentation ORM du modèle ActiveRecord, est plus de 10 fois plus léger que Hibernate dans les dépendances, au moins deux fois plus vite à exécution, et ne nécessite aucune configuration ou annotations.

2
ipolevoy

Vous voudrez peut-être jeter un œil à prevayler (sur sourceforge). Une approche un peu plus légère de la persistance. Ou pensiez-vous faire des reportages contre la DB?

1
Stephan Eggermont

Si l'utilisation d'une base de données relationnelle n'est pas obligatoire, essayez db4o.

1
Behrang

J'ai créé sormula comme alternative aux ORM pour poids lourds. Il est prêt pour CRUD, compatible POJO, simple à utiliser, à configurer et à comprendre. L'utilisation de zéro configuration est possible. www.sormula.org

1
Jeff Miller