[JAVA] Ich möchte Schlangenfälle mit Tabellendefinitionen stoppen

Was ist ein Schlangenfall?

In der Tabellendefinition wird es häufig durch den Fall der Schlange definiert (\ _ getrennt). Beispielsweise wird ein Beispiel eines Masters beschrieben, der Benutzerinformationen speichert. Tabellenname: mst \ _user

Logischer Name Physischer Name
Benutzeridentifikation user_id
Nutzername user_name

Beziehung zur Anwendungsentwicklung

Anwendungsentwicklungssprachen sind oft keine Schlangenfälle. Im Fall von Java kann es sich beispielsweise um einen Pascal-Fall und einen Kamel-Fall handeln.

Was ist los

Am Beispiel von Java lautet die Klasse (DTO), die mst_user entspricht, gemäß der Java-Konvention (Pascal-Fall, Camel-Fall) wie folgt.

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

    // getter,Setter weggelassen
}

Obwohl es sich bei der Tabelle um einen Schlangenfall handelt, ist eine Zuordnung erforderlich, da die Java-Konvention unterschiedlich ist. Damit sind einige Probleme verbunden.

  1. Die Erstellung von Spezifikationen ist schwer Beispiel) Falsch beim Erstellen von API-Spezifikationen. Da es normalerweise viele Gegenstände gibt, ist es leicht, einen Fehler zu machen, indem man die Gegenstände aus der Tabellendefinition kopiert und den Schlangenkoffer durch einen Kamelkoffer ersetzt. user_id => userid => Ich habe einen Fehler gemacht! Insbesondere wenn Sie nur die Entwicklung von außen entwerfen und anfordern, werden Sie Zeit verschwenden, wenn Sie fragen: "Was ist mit userId?"

  2. Es ist problematisch, wenn Sie während der Entwicklung einen Zuordnungsfehler machen Da SQL ein Schlangenfall ist, muss die Zuordnung zur Java-Klasse beschrieben werden. Wenn es vom OR-Mapper automatisch generiert werden kann und es sich um eine Spezifikation handelt, die verknüpft wird, wird das Mapping stetig geschrieben, sodass die Möglichkeit eines Fehlers besteht. Das Ergebnis des Abrufs des Werts ist null => Es ist ein Zuordnungsfehler aufgetreten.

  3. Die gegenseitige Umwandlung zwischen Schlangen- und Kamelkoffer ist problematisch Es ist mit 1 und 2 verwandt, aber es erfordert viel Mühe, Schlangenfall => Kamelfall und Kamelfall => Schlangenfall beim Mapping zu konvertieren. Es mag ein bisschen besser sein, wenn Sie ein Werkzeug herstellen, aber es ist immer noch ein Ärger.

Stoppen Sie Schlangenfälle und passen Sie sich den Konventionen der Entwicklungssprache an

Befolgen Sie die Java-Konventionen.

Tabellenname: MstUser

Logischer Name Physischer Name
Benutzeridentifikation userId
Nutzername userName

DTO

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

    // getter,Setter weggelassen
}

Dies erspart Ihnen die Mühe des Mappings, sodass Sie effizient entwerfen und entwickeln können. Gibt es irgendwelche Nachteile?

Inhaltsverzeichnis

Recommended Posts

Ich möchte Schlangenfälle mit Tabellendefinitionen stoppen
Ich möchte Java-Updates insgesamt stoppen
Ich möchte @Autowired in Servlet verwenden
Ich möchte APP_HOME an Logback in Gradle übergeben
rsync4j - Ich möchte rsync in Java berühren.
Ich habe versucht, neunundneunzig in Java auszugeben
Ich möchte irgendwann sogar in Kotlin sein
Ich möchte den Wert in Ruby erhalten
Ich möchte Combine auch in UIKit verwenden.
Ich möchte die praktischen Funktionen von Clojure in Kotlin nutzen
Ich möchte auch in Laradock Fischschalen verwenden! !!
Ich möchte ES2015 auch in Java verwenden! → (´ ・ ω ・ `)
Ich möchte ein kleines Symbol in Rails verwenden
Ich möchte eine Funktion in der Rails Console definieren
Ich möchte in RSpec auf einen GoogleMap-Pin klicken
Ich möchte Zeichen konvertieren ...
Ich möchte einen relativen Pfad in einer Situation finden, in der Pfad verwendet wird
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
Ich möchte eine Parkettdatei auch in Ruby erstellen
Ich möchte im gespeicherten Zustand zum selben Bildschirm wechseln
[Ruby] Ich möchte die Reihenfolge der Hash-Tabelle umkehren
Ich möchte die if-else-Anweisung für bedingte Verzweigungen in Java vereinfachen
Ich möchte einige Eigenschaften als JSON-Strings in Jackson erhalten!
Ich möchte Geräte in Rails hinzufügen, kann die Installation jedoch nicht bündeln
Ich möchte den oberen Rand in der UITableView von Grouped entfernen (schnell)
[Java] Ich möchte mit dem Schlüssel im Objekt eindeutig arbeiten
Ich möchte den Wert von Attribute in Selenium of Ruby ändern
Möchten Sie eine IOException aus dem Stream werfen? In diesem Fall
[Android] Ich möchte den Listener über die Schaltfläche in ListView abrufen
[Ruby] Ich möchte nur das ungerade Zeichen in der Zeichenfolge ausgeben
[Rails] Ich möchte Daten verschiedener Modelle in einem Formular senden
Ich möchte JSP in Emacs einfacher als die Standardeinstellung schreiben.
Ich möchte im Dialogfeld mehrere Elemente mit einem benutzerdefinierten Layout auswählen
Ich habe die Verwendung der Schlangenhülle für den Variablennamen in Spring Boot nicht mehr verstanden
(Beschränkt auf Java 7 oder höher) Ich möchte, dass Sie Objekte in Objects.equals vergleichen
[Ruby] Ich möchte veröffentlichte Artikel in der Reihenfolge des neuesten Datums anzeigen
Ich möchte ein chinesisches (koreanisches) PDF mit dünnen Berichten anzeigen
Mein Memorandum, dass ich ValidationMessages.properties UTF8 in Spring Boot erstellen möchte
Ich möchte die IP-Adresse erhalten, wenn ich mit Java eine Verbindung zu Wi-Fi herstelle
Ich möchte bei der Registrierung in der Datenbank eine Fehlermeldung anzeigen
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
[Java Spring MVC] Ich möchte DI in meiner eigenen Klasse verwenden
"Lehrer, ich möchte im Frühjahr eine Anmeldefunktion implementieren" ① Hallo Welt
Ich möchte eine Webanwendung entwickeln!
Ich möchte ein schönes build.gradle schreiben
Ich möchte doppelte Fehlermeldungen beseitigen
Ich möchte eine ios.android App machen
Ich möchte DBViewer mit Eclipse 2018-12 verwenden! !!
Ich möchte einen Unit Test schreiben!
Ich möchte statische Felder auf @Autowired ausrichten