# Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen



## Avalon (2. Sep 2020)

Hallo, ich habe eine Spring Boot Anwendung gebaut. Als blutiger Anfänger nach einem Tutorial in Youtube. Funktioniert auch alles soweit. Dabei wird eine Tabelle in einer MySQL Datenbank angelegt. Folgendes Problem: Ich habe z.B in einer Klasse Patient das Attribut "nachName" entsprechend  lowerCamelCase Konvention bei Variablen in Java. Wenn ich damit die Tabelle von der Anwendung anlegen lasse, wird das Attribut "nachName" in der Klasse zum Spaltennamen "nach_name" in der Tabelle. Irgendwo wird der Großbuchstabe konvertiert zu einem Unterstrich gefolgt von einem Kleinbuchstaben. Das ist zwar eher ein kosmetisches Problem, denn wenn ich der Klasse als Attribut "nachname" verwende, wird auch "nachname" in die Datenbank eingetragen. Das entspricht aber dann nicht den Konventionen. Hat da jemand Erfahrung mit Eclipse, Spring Boot, JPA, Hibernate und MySQL Connect (alles als Maven Projekt)? Kennt jemand das Problem? Reicht die Beschreibung? Oder werden noch Code und Bilderchen benötigt?


----------



## mrBrown (2. Sep 2020)

Das ist das Standardverhalten von Hibernate mir Spring Boot, man kann auch andere auswählen, oder aber über die Annotation den Namen selbst setzen.

Grund dürfte sein, dass die meisten DBs defaulmäßig case-insensitive sind, und ein Unterstrich als Trenner deshalb sinnvoller ist.


----------



## Avalon (2. Sep 2020)

Super. Ich wusste nicht, das man den Namen per Annotation selber setzen kann. Probier ich gleich mal aus. Danke!!!


----------



## LimDul (2. Sep 2020)

Ich finde aber NachName auch in Java Falsch, den der Begriff heißt "Nachname" Camel Case sollte man nur verwenden, wenn man zwei Wörter zusammenschreibt, die eigenständig sind.


----------



## mrBrown (2. Sep 2020)

LimDul hat gesagt.:


> Ich finde aber NachName auch in Java Falsch, den der Begriff heißt "Nachname" Camel Case sollte man nur verwenden, wenn man zwei Wörter zusammenschreibt, die eigenständig sind.


Wobei das in Verbindung mit Vorname, Geburtsname, Rufname, etc schon die Lesbarkeit fördern kann.


----------



## Avalon (2. Sep 2020)

LimDul hat gesagt.:


> Ich finde aber NachName auch in Java Falsch, den der Begriff heißt "Nachname" Camel Case sollte man nur verwenden, wenn man zwei Wörter zusammenschreibt, die eigenständig sind.


Das ist richtig. Es ist ein Begriff. Da stimme ich zu. Aber nicht ein Wort. Nachname setzt sich aus zwei Wörtern zusammen. Nach und Name. Demnach sollte nachName richtig sein.


----------



## mrBrown (2. Sep 2020)

Avalon hat gesagt.:


> Aber nicht ein Wort. Nachname setzt sich aus zwei Wörtern zusammen.


Beides widerspricht sich für mich gar nicht, es ist ein Wort, welches sich aus zwei Wörten zusammensetzt. In Deutsch ist halt auch Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz ein Wort 

Im englischen ist’s da oft einfacher...


----------



## LimDul (2. Sep 2020)

Wenn ich mal nach der Definition von Camel Case gehe: https://en.wikipedia.org/wiki/Camel_case - heißt es, man lässt Leerzeichen, Punkte etc. weg. Eine RegeEx auf Word Boundaries würde bei Nachname ja auch nicht nach Nach und Name trennen. Dementsprechend halte ich auch in Camel Case die "formal" richtige Schreibweise für Nachname.

Allerdings stimme ich @mrBrown zu. Aus Gründen der Lesbarkeit oder Semantik muss man sich nicht sklavisch an Formalismen halten. Das wichtigste ist, dass es konsistent ist und verständlich.


----------



## mrBrown (2. Sep 2020)

LimDul hat gesagt.:


> Wenn ich mal nach der Definition von Camel Case gehe: https://en.wikipedia.org/wiki/Camel_case - heißt es, man lässt Leerzeichen, Punkte etc. weg. Eine RegeEx auf Word Boundaries würde bei Nachname ja auch nicht nach Nach und Name trennen. Dementsprechend halte ich auch in Camel Case die "formal" richtige Schreibweise für Nachname.


Der Artikel dürfte sich aber auf Englische Sprache beziehen, das Zusammensetzen von Wörtern gibts da ja so nicht. Das ist daher mMn schwierig aufs Deutsche zu übertragen, zB wäre auf Englisch "FamilyName" korrekt, auf Deutsch aber "Familienname"


----------



## Thallius (2. Sep 2020)

Generell würde ich FamilyName nicht verwenden. In vielen Ländern gibt es gar keine solche strickte Unterscheidung zwischen Vor- und Nachnamen (Familiennamen). Ich würde immer mit Firstname, Secondname oder meinetwegen auch Lastname arbeiten.


----------



## mrBrown (2. Sep 2020)

Thallius hat gesagt.:


> Generell würde ich FamilyName nicht verwenden. In vielen Ländern gibt es gar keine solche strickte Unterscheidung zwischen Vor- und Nachnamen (Familiennamen). Ich würde immer mit Firstname, Secondname oder meinetwegen auch Lastname arbeiten.



Auch mit FirstName und SecondName kommt man an Grenzen, nicht überall lässt es sich in zwei Teile teilen, und mit LastName ist man wieder in dem Vor- und Nachnamen-Schema. In manchen spielt dazu noch die Reihenfolge der Bestandteile von Vor- oder Nachname eine Rolle, in manchen gibt es Vor- und Nachname, aber der Nachname steht vor dem Vornamen, SecondName bietet dazu Verwechselungsgefahr mit dem zweiten Vornamen (oder Nachnamen)...

Am einfachsten fährt man mit einfach nur "Name"...


----------

