Ne Hibernate Entièrement Support De SQLite
Jboss, Hibernate ne dit rien sur le support de SQLite -
https://community.jboss.org/wiki/SupportedDatabases2
Et même est mentionné dans le ci-dessous AFIN de:
Pouvez-vous éclairer à ce sujet. Je veux utiliser SQLite intégrée avec mise en veille prolongée pour le swing application de bureau.
Je suis aussi en train d'évaluer Derby (JavaDB) comme il peut également être incorporé et fait partie du jdk.
- Avez-vous regardé le H2 de la base de données? Il a une petite empreinte de pas, est embeded et fonctionne bien avec Hiberna
- Merci Jason. J'ai juste fait une comparaison rapide et H2 semble intéressant. Je vais en discuter avec mon équipe.
- Hibernate supporte Derby, mais cette question ne semble pas être un sujet de Derby. Retrait du Derby de la balise.
- Une mature et stable, 100% Java SGBD est disponible dans HSQLDB qui a été développé en allant sur 20 ans. La base de données et JDBC 4+ pilote peut être téléchargé à l'adresse hsqldb.org.
Vous devez vous connecter pour publier un commentaire.
Depuis SQLite est une base de données intégrée pour le C-comme les environnements, écrit en C et donc compilé en code natif, les changements que la mise en veille prolongée (ou tout ORM) à soutenir ne sont pas vraiment élevés. Java est multi-plateforme et il serait un peu bizarre d'avoir une plate-forme dépendant de la dépendance. Sur Android, SQLite est utilisé, mais il y a la plate-forme fournit un pilote JDBC pour elle.
Généralement, des binaires pour Windows sont compatibles avec les différentes versions de Windows - aussi longtemps que l'architecture reste la même. Si vous regardez la SQLite page de téléchargement vous remarquerez qu'il y a un 32 bits pré-construit binaire Windows. Celui-ci peut être utilisé sur presque toutes les versions de Windows (à l'exception de Windows RT, peut-être), mais vous ne pouvez pas l'utiliser sur Linux ou OS X. pour l'utilisation de SQLite à partir de Java, vous devez inclure le bon binaire pour le système d'exploitation spécifique /l'architecture, ce qui en fait effectivement une application Java qui dépend de la plateforme. C'est quelque chose que vous n'avez généralement pas besoin.
Si vous êtes la construction d'une application de bureau de Swing et vous souhaitez utiliser une base de données intégrée, ma suggestion serait d'utiliser une Java de base de données intégré, comme H2, HSQL ou Derby. Ce dernier est également livré avec Oracle Java comme JavaDB. Tous sont pris en charge que la mise en veille dialectes (Pour une liste complète des dialectes, voir le dialecte classes: https://github.com/hibernate/hibernate-orm/tree/master/hibernate-core/src/main/java/org/hibernate/dialect)
Comme indiqué ci-dessous par @akostadinov, il peut y avoir d'autres facteurs que vous voulez examiner, par exemple le fait que SQLite est écrit en code natif et donc peut ont de meilleures performances. En fin de compte, le seul qui peut décider de la base de données qui est le meilleur est celui qui est le bâtiment le système.
Il y a plusieurs SQLite dialectes là.
Hibernate 3:
https://github.com/kemitix/sqlite-dialect
Hibernate:
Hibernate 4:
https://github.com/EnigmaBridge/hibernate4-sqlite-dialect
Hibernate:
Note: je suis l'auteur de ce référentiel. Basé sur le
gwenn
repo.Hibernate 5:
https://github.com/gwenn/sqlite-dialect/
Pas encore ajouté au dépôt central de maven. Auteur de travaux avec mise en veille prolongée de l'équipe de l'intégrer Hibernate directement. Il est suivi dans cette question.
En attendant, vous pouvez utiliser https://jitpack.io/
Ajouter jitpack référentiel:
Ajouter la dépendance:
Hibernate:
hibernate.dialect=org.hibernate.dialect.identity.SQLiteDialect
mais il ne fonctionne toujours pas. J'ai eu une exception avec ce message: org.mise en veille prolongée.de démarrage.de registre.sélecteur.le spi.StrategySelectionException: Impossible de résoudre le nom [org.mise en veille prolongée.le dialecte.l'identité.SQLiteDialect] stratégie [org.mise en veille prolongée.le dialecte.Le dialecte] C'est avec Hibernate 5.0.12.Si vous avez besoin d'utiliser SQLite avec mise en veille prolongée pour une quelconque raison, vous avez besoin d'un custom dialecte. Il semble que il ya un couple de mises en œuvre des coups de pied dans le web.
J'ai essayé celui-ci: https://github.com/gwenn/sqlite-dialect qui a fonctionné pour moi avec Hibernate 3 (je crois qu'elle a besoin de quelques mises à jour pour Hibernate 4). Notez que vous devrez compiler le code vous-même et ensuite définir la
hibernate.dialect
propriété de configuration pour êtreorg.hibernate.dialect.SQLiteDialect
.D'autres implémentations que j'ai trouvé: http://code.google.com/p/hibernate-sqlite/ et https://gist.github.com/virasak/54436.
SQLite est très indulgent sur la syntaxe SQL autant que j'ai de l'expérience avec de sorte qu'il peut fonctionner. Je n'ai pas utilisé SQLite largement avec hibernate, mais a essayé de l'utiliser avec infinispan avec un certain succès. Le stock SQLite jdbc driver que j'ai trouvé que la meilleure recommandé, manque un peu de JDBC standard de méthodes, donc j'ai eu à le patcher pour avoir de travail.
Je pense que vous pouvez essayer avec hibernate et voir si cela fonctionne. Il peut vous aider à voir ce que j'ai fait pour avoir de travail avec infinispan:
https://issues.jboss.org/browse/ISPN-2980
Je sais que ce n'est pas la réponse exacte que vous aimeriez voir, mais j'ai décidé de répondre parce que je pense qu'il y a peu de chance que quelqu'un d'autre répondre dans les plus utile. Au moins, quand j'étais à la recherche pour plus d'informations à la fois, je ne pouvais pas trouver.