[JAVA] Je veux arrêter les cas de serpent avec des définitions de table

Qu'est-ce qu'une caisse de serpent?

Dans la définition de table, il est souvent défini par la casse du serpent (délimité par \ _). Par exemple, un exemple de maître qui stocke des informations utilisateur sera décrit. Nom de la table: mst \ _user

Nom logique Nom physique
Identifiant d'utilisateur user_id
Nom d'utilisateur user_name

Relation avec le développement d'applications

Les langages de développement d'applications ne sont souvent pas des cas de serpent. Par exemple, dans le cas de java, il peut s'agir d'un cas Pascal et d'un cas camel.

Qu'est-ce qui ne va pas

En prenant java comme exemple, la classe (DTO) correspondant à mst_user est la suivante selon la convention Java (cas Pascal, cas Camel).

public class MstUser {
    private String userId;
    private String userName;

    // getter,setter omis
}

Bien que la table soit un cas de serpent, le mappage est nécessaire car la convention java est différente. Il y a quelques problèmes associés à cela.

  1. La création de spécifications est lourde Exemple) Erreur lors de la création de spécifications d'API. Comme il y a généralement de nombreux éléments, il est facile de se tromper en copiant les éléments de la définition de la table et en remplaçant l'étui de serpent par un étui de chameau. user_id => userid => J'ai fait une erreur! En particulier, si vous ne concevez et demandez le développement que de l'extérieur, vous perdrez du temps en demandant "Et userId?"

  2. C'est gênant si vous faites une erreur de cartographie pendant le développement Puisque SQL est un cas de serpent, il est nécessaire de décrire le mappage à la classe java. S'il peut être généré automatiquement par le mappeur OR, s'il s'agit d'une spécification qui se joint, le mappage sera écrit régulièrement, il y a donc une possibilité de faire une erreur. Le résultat de l'obtention de la valeur est null => Il se produit une erreur de mappage.

  3. La conversion mutuelle entre la caisse de serpent et la caisse de chameau est gênante Il est lié à 1 et 2, mais il faut beaucoup de mal pour convertir cas de serpent => cas de chameau et cas de chameau => cas de serpent lors de la cartographie. C'est peut-être un peu mieux si vous fabriquez un outil, mais c'est toujours un problème.

Arrêtez les cas de serpent et adaptez-vous aux conventions du langage de développement

Suivez les conventions Java.

Nom de la table: MstUser

Nom logique Nom physique
Identifiant d'utilisateur userId
Nom d'utilisateur userName

DTO

public class MstUser {
    private String userId;
    private String userName;

    // getter,setter omis
}

Cela vous évitera les problèmes de cartographie, vous permettant ainsi de concevoir et de développer efficacement. Y a-t-il des inconvénients?

Table des matières

Recommended Posts

Je veux arrêter les cas de serpent avec des définitions de table
Je veux arrêter complètement les mises à jour Java
Je veux utiliser @Autowired dans Servlet
Je souhaite transmettre APP_HOME pour me connecter à Gradle
rsync4j --Je veux toucher rsync en Java.
J'ai essayé de sortir quatre-vingt-dix-neuf en Java
Je veux être finalement même à kotlin
Je veux obtenir la valeur en Ruby
Je souhaite également utiliser Combine dans UIKit.
Je souhaite utiliser les fonctions pratiques de Clojure dans Kotlin
Je veux aussi utiliser des coquillages à Laradock! !!
Je veux aussi utiliser ES2015 avec Java! → (´ ・ ω ・ `)
Je veux utiliser une petite icône dans Rails
Je souhaite définir une fonction dans la console Rails
Je veux cliquer sur une broche GoogleMap dans RSpec
Je veux convertir des caractères ...
Je veux trouver un chemin relatif dans une situation où Path est utilisé
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
Je veux créer un fichier Parquet même en Ruby
Je souhaite passer au même écran dans l'état enregistré
[Ruby] Je souhaite inverser l'ordre de la table de hachage
Je souhaite simplifier l'instruction if-else de la branche conditionnelle en Java
Je veux obtenir des propriétés sous forme de chaînes JSON dans Jackson!
Je veux ajouter un appareil dans Rails, mais je ne peux pas grouper l'installation
Je veux supprimer la marge supérieure dans UITableView de Grouped (swift)
[Java] Je veux effectuer distinctement avec la clé dans l'objet
Je veux changer la valeur de l'attribut dans Selenium of Ruby
Vous souhaitez supprimer une IOException de Stream? dans ce cas
[Android] Je souhaite obtenir l'auditeur à partir du bouton de ListView
[Ruby] Je souhaite afficher uniquement le caractère impair dans la chaîne de caractères
[Rails] Je souhaite envoyer des données de différents modèles dans un formulaire
Je veux écrire une JSP dans Emacs plus facilement que la valeur par défaut.
Je souhaite sélectionner plusieurs éléments avec une disposition personnalisée dans la boîte de dialogue
Je suis resté coincé en utilisant un cas de serpent pour le nom de variable dans Spring Boot
(Limité à Java 7 ou version ultérieure) Je souhaite que vous compariez des objets dans Objects.equals
[Ruby] Je souhaite afficher les éléments publiés par ordre de date la plus récente
Je souhaite afficher un PDF chinois (coréen) avec des rapports fins
Mon mémorandum que je veux faire ValidationMessages.properties UTF8 dans Spring Boot
Je souhaite obtenir l'adresse IP lors de la connexion au Wi-Fi avec Java
Je souhaite afficher un message d'erreur lors de l'inscription dans la base de données
Je veux ForEach un tableau avec une expression Lambda en Java
[Java Spring MVC] Je souhaite utiliser DI dans ma propre classe
"Professeur, je souhaite implémenter une fonction de connexion au printemps" ① Hello World
Je souhaite développer une application web!
Je veux écrire un joli build.gradle
Je souhaite éliminer les messages d'erreur en double
Je veux créer une application ios.android
Je souhaite utiliser DBViewer avec Eclipse 2018-12! !!
Je veux écrire un test unitaire!
Je souhaite cibler les champs statiques sur @Autowired