J'ai un programme java mono-utilisateur que je souhaiterais stocker dans une base de données légère telle que Derby ou Sqlite. Je souhaite utiliser une couche d'abstraction de données dans mon programme. Hibernate semble exiger beaucoup de configuration et est excessif pour ce dont j'ai besoin. Quelles sont les alternatives légères à Hibernate?
CMobileCom JPA est une implémentation JPA légère pour Java et Android. Sa taille est d'environ 380K. C'est léger et rapide. cmobilecom.com
John
Réponses:
142
Hibernate nécessite une configuration pratiquement nulle si vous utilisez des annotations. Il peut même découvrir automatiquement les beans mappés dans le chemin de classe! Je ne vois pas d'alternative à la fois du point de vue de la simplicité et de la puissance.
Il peut également s'exposer comme JPA, ce qui est (IMHO) encore plus simple.
aussi il a besoin de beaucoup de bibliothèques externes essayez de l'utiliser sur android: P
shérif
4
J'ai essayé de trouver une alternative plus simple à Hibernate. Dans un projet personnel, j'ai utilisé MyBatis (quel nom terrible). C'était beaucoup plus de travail qu'Hibernate. Hibernate économise vraiment beaucoup de codage SQL et facilite les relations parent-enfant. J'ai également examiné quelques ORM de style ActiveRecord pour Java. Aucun ne semblait mature ou plus facile que Hibernate. Donc, je retourne à Hibernate.
devdanke
56
la question n'était-elle pas une ALTERNATIVE?
Łukasz Gruner
8
Hibernate n'est pas une alternative légère à Hiberernate
cosbor11
55
Ma bibliothèque ORMLite est l'une de ces alternatives. Il prend en charge MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB et Sqlite, et peut être facilement é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.
OrmLite semble vraiment prometteur! Mais ce projet est-il toujours vivant? Pas de nouvelle version depuis plus d'un an, pas de réponse aux pull requests / issues sur Github.
Stefan
3
La version 5.0 est sortie en juin 2016.
Lauri Laanti
La version 5.1 a été publiée le 19/02/2018. Mais ce n'est pas du tout comparable à Hibernate et certaines implémentations d'annotations JPA ne fonctionnent pas correctement.
M-Razavi
"comparable à Hibernate"? Ce sont tous les deux des ORM mais autrement très différents. En termes d'implémentations JPA, veuillez remplir un rapport de bogue si vous trouvez quelque chose @ M-Razavi.
iBatis est très léger. Vous pouvez définir et contrôler plus facilement votre mappage SQL-objet.
Berlin Brown
... doivent voter pour iBatis, mais attention, ce n'est pas une alternative ORM car il n'essaie pas de rivaliser avec des goûts d'Hibernate. C'est un animal un peu différent, mais correspond à ce que vous recherchez en termes de poids.
Je pense que le XML dans i / MyBatis est en fait un avantage car il conserve les requêtes complexes dans un format qui peut être facilement copié sur une console SQL pour les tests.
Peter Tillemans
22
jOOQ est livré avec un DSL fluide simulant SQL directement en Java comme effet secondaire pour ses principaux objectifs qui sont:
Génération de code source
Prise en charge complète du SQL standard, y compris les fonctionnalités du langage SQL telles que les UNION, les SELECT imbriqués, tous les types de JOIN, les alias (par exemple pour les auto-jointures), etc.
Prise en charge étendue du SQL non standard, y compris les UDT, les procédures stockées, les fonctions spécifiques au fournisseur, etc.
jOOQ roches! Nous avons implémenté un service ETL à grande échelle avec lui, et nous ne pourrions être plus heureux. J'ai utilisé iBATIS et jOOQ offre les mêmes avantages que le SQL de bas niveau sans les rames de XML et le manque de sécurité de type.
espionné
3
J'ai oublié de mentionner l'une des meilleures fonctionnalités de jOOQ: les requêtes complexes et / ou générées dynamiquement peuvent être assemblées de manière contrôlée et vérifiées par le compilateur Java, vous évitant ainsi toutes ces erreurs de syntaxe ambiguës que les bases de données lancent et fournissant une régression au moment de la compilation couverture pour quand le schéma change sous vous.
espionné
JOOQ est incroyable, mais de toute évidence, il n'est pas gratuit pour Oracle et Sybase, donc beaucoup de gens évitent ce cadre et utilisent comme MyBatis
Makky
@Makky: Merci pour vos commentaires. J'espère que vous gardez à l'esprit les propositions de valeur réelles et que vous n'allez pas passer à un cadre complètement différent simplement sur la base du fait que l'un est gratuit et l'autre ne l'est pas. Le coût de maintenance et de migration que cela induirait dans votre logiciel est prohibitif et bien au-delà de toute licence commerciale raisonnable ...
Lukas Eder
15
Apache Commons DBUtils supprime 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 (à la manière d'Hibernate et d'autres frameworks mentionnés ici) mais il automatise le mappage des colonnes SELECT aux champs membres Java ainsi que d'autres tâches de programmation JDBC répétitives. C'est certainement léger.
La prise en charge de SQLite a été ajoutée. Je ne l'ai pas encore essayé sur Android.
Rob Bygrave
9
Cayenne m'a bien servi. Relativement facile à comprendre et à mettre en œuvre. Je trouve la partie rétro-ingénierie particulièrement charmante. La configuration peut être effectuée avec une interface graphique.
Apache Empire-db est un composant de persistance de données relationnelles Open Source qui permet une définition de requête dynamique indépendante du fournisseur de base de données ainsi qu'une extraction et une mise à jour de données simples et sûres. Par rapport à la plupart des autres solutions telles que les 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 , la réduction des redondances et l'amélioration de la productivité des développeurs.
Un exemple:
// 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);;
Je suis peut-être un peu en retard à la fête, 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 rapide au moment de l'exécution, et ne nécessite aucune configuration ou annotations.
Vous voudrez peut-être jeter un œil à prevayler (sur sourceforge). Une approche un peu plus légère de la persistance. Ou envisagiez-vous de faire des reportages contre la DB?
J'ai créé sormula comme alternative aux ORM lourds. Il est prêt pour CRUD, compatible POJO, simple à utiliser, à configurer et à comprendre. Une utilisation sans configuration est possible. www.sormula.org
Bienvenue dans Stack Overflow! Merci d'avoir publié votre réponse! Veuillez lire attentivement la FAQ sur l'auto-promotion . Notez également qu'il est nécessaire de publier une clause de non-responsabilité chaque fois que vous créez un lien vers votre propre site / produit.
Andrew Barber
2
ce n'est pas en développement, pas de nouvelle version actuelle de l'auteur, la dernière version attendue date de 2012.
Réponses:
Hibernate nécessite une configuration pratiquement nulle si vous utilisez des annotations. Il peut même découvrir automatiquement les beans mappés dans le chemin de classe! Je ne vois pas d'alternative à la fois du point de vue de la simplicité et de la puissance.
Il peut également s'exposer comme JPA, ce qui est (IMHO) encore plus simple.
la source
Ma bibliothèque ORMLite est l'une de ces alternatives. Il prend en charge MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB et Sqlite, et peut être facilement é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.
la source
Il nécessite toujours une configuration XML, mais jetez un œil à MyBatis (anciennement iBatis) .
la source
jOOQ est livré avec un DSL fluide simulant SQL directement en Java comme effet secondaire pour ses principaux objectifs qui sont:
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
(Clause de non-responsabilité, je travaille pour l'entreprise derrière jOOQ)
la source
Apache Commons DBUtils supprime 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 (à la manière d'Hibernate et d'autres frameworks mentionnés ici) mais il automatise le mappage des colonnes SELECT aux champs membres Java ainsi que d'autres tâches de programmation JDBC répétitives. C'est certainement léger.
la source
Vous pouvez jeter un œil à Ebean ORM . - Aucune session - le chargement paresseux fonctionne simplement - API plus simple à utiliser et à apprendre.
la source
Cayenne m'a bien servi. Relativement facile à comprendre et à mettre en œuvre. Je trouve la partie rétro-ingénierie particulièrement charmante. La configuration peut être effectuée avec une interface graphique.
la source
Je peux proposer apache empire-db. http://incubator.apache.org/empire-db/
Apache Empire-db est un composant de persistance de données relationnelles Open Source qui permet une définition de requête dynamique indépendante du fournisseur de base de données ainsi qu'une extraction et une mise à jour de données simples et sûres. Par rapport à la plupart des autres solutions telles que les 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 , la réduction des redondances et l'amélioration de la productivité des développeurs.
Un exemple:
la source
Le cadre ORMAN est également bon. https://github.com/ahmetalpbalkan/orman
Documentation: https://github.com/ahmetalpbalkan/orman/wiki
Comparaison: https://github.com/ahmetalpbalkan/orman/wiki/Why-orman-is-better-than-other-orms-for-you%3F
la source
Je suis peut-être un peu en retard à la fête, 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 rapide au moment de l'exécution, et ne nécessite aucune configuration ou annotations.
la source
Vous voudrez peut-être jeter un œil à prevayler (sur sourceforge). Une approche un peu plus légère de la persistance. Ou envisagiez-vous de faire des reportages contre la DB?
la source
Si l'utilisation d'une base de données relationnelle n'est pas obligatoire, essayez db4o.
la source
J'ai créé sormula comme alternative aux ORM lourds. Il est prêt pour CRUD, compatible POJO, simple à utiliser, à configurer et à comprendre. Une utilisation sans configuration est possible. www.sormula.org
la source
Kiteframework est également un cadre orm très léger. Il fournit presque toutes les opérations de base de données avec des configurations minimales.
http://deipakgarg.github.com/Kite-ORM/
Divulgation: je suis l'auteur de ce projet
la source