6
votes

Comment devrais-je utiliser UUID avec Javadb / Derby et JDBC?

J'utilise actuellement int comme type de clé primaire dans Javadb (Apache Derby), mais depuis que je mettant en place un système distribué, je voudrais modifier le type à java.util.uuid . Quelques questions à ce sujet:

  • Quel type de données dans Javadb / Derby devrais-je utiliser pour UUID? J'ai vu char (16) pour les données de bits été mentionné mais je ne sais pas grand chose à ce sujet. Est varchar (16) une alternative?

  • Comment dois-je l'utiliser avec JDBC? Par exemple. Dans un PredyStatement , comment dois-je définir et obtenir une UUID?

  • Si je pouvais modifier la base de données sur SQL Server, y a-t-il un type de données compatible avec Java.Util.uuid?

    Simplement, comment devrais-je utiliser UUID avec Javadb / Derby et JDBC?


0 commentaires

3 Réponses :


12
votes

UUID est une valeur de 128 bits. Le type Char (16) pour les données de bits reflète qu'il s'agit de données de bits stockées sous forme de caractère pour la concision. Je ne pense pas que varchar (16) fonctionnerait car il n'a pas le drapeau bit. La base de données devrait être en mesure de convertir les données binaires en données de caractères qui traitent du codage et sont risquées. Plus important encore, cela ne vous achèterait rien. Étant donné qu'un UUID est toujours 128 bits, vous n'obtenez pas les économies d'espace à partir de varchar sur char . Donc, vous pouvez aussi bien utiliser le char (16) prévu pour les données de bits .

avec JDBC, je pense que vous utilisez la méthode get / Setbytes () car elle traite de petites quantités de données binaires. (Pas positif, devrait essayer cela)

et aucune idée de la partie SQL Server.


0 commentaires

-4
votes

Vous pouvez convertir l'UUID en une chaîne et le stocker comme Varchar. La plupart des formats de chaîne UUID sont similaires à ceux-ci: 32 chiffres séparés par des traits d'union: 00000000-0000-0000-0000-000000000000, alors vous voudrez alors un Varchar (36) ou le faire comme Varcharne (64) si vous s'il vous plaît , puisque cela ne fait pas mal d'avoir un «espace» supplémentaire disponible dans votre varchar - seuls les chiffres réels sont stockés.

Une fois que vous l'avez converti sur une chaîne, il suffit d'appeler l'instruction.Setstring pour l'inclure dans votre instruction insertion.


0 commentaires

3
votes

Si vous souhaitez toujours utiliser l'objet UUID dans votre code, vous pouvez utiliser DBString pour créer des objets UUID à partir de la DB et de la touche pour les stocker dans la DB.


0 commentaires