2009-07-18 1 views
3

Les noms de colonne et de table créés par les fournisseurs JPA lorsque vous n'utilisez pas les balises @Column et autres sont toujours en majuscules. Je pense que la spécification de l'APP dit même qu'ils devraient le faire. Mais y a-t-il une raison technique spécifique, comme des backends insensibles à la casse? En d'autres termes, est-ce que mon habitude de toujours placer les noms camelcased avec l'argument name à l'annotation @Column tournera autour et me mordra un jour?Est-ce que je vais avoir des ennuis pour changer les noms de table et de colonne de supérieur à camelcase avec JPA?

(Notez que j'apprécie la convention sur la configuration, mais parfois, je veux juste avoir mon chemin.)

Répondre

2

ayant des noms séparés pour underscore des objets de base de données est un peu une habitude historique, principalement parce que les systèmes de bases de données sont souvent insensibles à la casse. Dans cette situation, avoir un nom de table où les mots s'exécutent tous ensemble est plutôt illisible (par exemple MYLONGTABLENAMEISNTVERYREADABLE). Utiliser des underscores est juste une convention de nommage pour rendre les choses plus faciles à lire, tout comme le cas du chameau. Si vous passez d'un boîtier séparé par un trait de caractère à un chameau, tout ira bien puisque les implémentations JPA sont conçues pour fonctionner avec des bases de données sensibles à la casse et à la casse.

+1

Par "sont conçus pour fonctionner", voulez-vous dire, ils travailleront automagiquement autour des backends case.insensibles quand j'utilise des noms qui nécessitent une sensibilité à la casse pour distinguer les tables? Ce n'est pas que j'ai jamais eu des noms de table qui étaient identiques dans tous les cas sauf les lettres - je trouverais cela trop déroutant pour les humains de toute façon. –

+0

Je veux dire que les implémentations JPA (par exemple Hibernate) ont des "dialectes" pour chaque système de base de données, et se comporteront en conséquence. Si vous avez deux noms identiques mais pour le cas, les dialectes devraient se plaindre. – skaffman

0

Si le système d'exploitation sur lequel votre base de données est en cours d'exécution est sensible à la casse, le boîtier des noms de table doit être correct.

Dans Linux, les autres correspondent à différentes colonnes:

@Column(name="MY_TABLE") 
@Column(name="my_table") 
+0

Au moins pour MySQL qui n'est pas vrai: les noms de tables sont sensibles à la casse, mais les noms de colonnes NE SONT PAS. –

+0

Pourriez-vous soutenir ceci avec quelques références? Je doute que cela fonctionne vraiment. –

Questions connexes