# mit Java SQL Attribute / Tabellen erstellen



## internet (1. Jul 2010)

Hallo, 
ich möchte eine Software schreiben, ähnlich wie ein CMS. 
Dabei soll alles vom Nutzer frei *konfigurierbar *sein. 

- Wie schafft man es in der Datenbank neue Attribute mittels JAVA anzulegen. 
- Neue SQL - Queries zu formulieren 
- Neue Tabellen anlegen
- Neue Attribute anzulegen. 
- Spalten umzunennen
- neue Templates anlegen
- das Template soll veränderbar sein (links kann das Menü sein, aber auch rechts)

Es soll auch möglich sein, dass man kofugurierbare IF - Abfragen im Code später machen kann. 
Wie sieht das in einem MVC - Pattern aus?
Welche Tabellen benötige ich hier am Anfang?

Würde mich über jede Hilfestellung freuen!


----------



## Michael... (1. Jul 2010)

internet hat gesagt.:


> - Wie schafft man es in der Datenbank neue Attribute mittels JAVA anzulegen.
> - Neue SQL - Queries zu formulieren
> - Neue Tabellen anlegen
> - Neue Attribute anzulegen.
> - Spalten umzunennen


In dem man entsprechende SQL Statements (aus Java heraus) ausführt.
Was man zunächst gelesen haben sollte:Datenbankmanagement mit JDBC


internet hat gesagt.:


> - neue Templates anlegen
> - das Template soll veränderbar sein (links kann das Menü sein, aber auch rechts)


Was meinst Du mit Templates?


internet hat gesagt.:


> Es soll auch möglich sein, dass man kofugurierbare IF - Abfragen im Code später machen kann.


 Was hast Du damit vor?


internet hat gesagt.:


> Wie sieht das in einem MVC - Pattern aus?


Gut, bietet sich bei Datenbankgeschichten grundsätzlich an.


internet hat gesagt.:


> Welche Tabellen benötige ich hier am Anfang?


Tabellen in der Datenbank oder von welchen Tabellen sprichst Du?


----------



## internet (1. Jul 2010)

Michael... hat gesagt.:


> In dem man entsprechende SQL Statements (aus Java heraus) ausführt.
> Was man zunächst gelesen haben sollte:Datenbankmanagement mit JDBC
> 
> Was meinst Du mit Templates?
> ...



Templates = mehrere GUIs
Abfragen für die erstellten Attribute. Wenn dieses Attribut null dann ...

Tabellen = welche Datenbanktabellen ich am Anfang für so eine Software benötige (Templates erstellen, etc.)


----------



## Michael... (1. Jul 2010)

internet hat gesagt.:


> Templates = mehrere GUIs


Willst Du einen GUI Editor bauen? Auf jeden Fall ist da sowas wie MVC notwendig, damit man GUIs unabhängig vom Datenmodel entwicklen kann.


internet hat gesagt.:


> Abfragen für die erstellten Attribute. Wenn dieses Attribut null dann ...


??No comprendo?? Generell kann man Informationen aus einer Daten in einer JTable darstellen


internet hat gesagt.:


> Tabellen = welche Datenbanktabellen ich am Anfang für so eine Software benötige (Templates erstellen, etc.)


Das musst Du doch wissen, welche Daten in der DB abgelegt werden sollen.


----------



## internet (1. Jul 2010)

Ja, GUI - Editor kann man es nennen. 
Gibt es hierfür schon iwelche Frameworks?

Ich meine damit: dass ich Source - Code schreiben kann. 
Dass ich mir quasi meine IF -Abfragen "zusammenklicken" kann.


----------



## Gastredner (1. Jul 2010)

Wenn du nicht in der Lage bist, einfache Datenbankverbindungen aufzubauen, dann würde ich ja mal ganz stark darauf tippen, dass ein ganzes CMS derzeit nocht weit hinter deinen aktuellen Fähigkeiten liegt...



			
				internet hat gesagt.:
			
		

> Ich meine damit: dass ich Source - Code schreiben kann.
> Dass ich mir quasi meine IF -Abfragen "zusammenklicken" kann.


Und so wird das sicherlich nix. Ein CMS ist ein hochspezialisiertes System, das lässt sich nicht binnen ein, zwei Tagen mal eben schreiben. Oder gar zusammenklicken. Eine Tochterfirma meines Ausbildungsbetriebs entwickelt ein CMS - und die haben damit ganz gut zu tun.


----------



## FArt (1. Jul 2010)

Noch eine Anregung: was Entwickler cool finden, finden die Anwender in der Regel uncool...

... hochkonfigurierbar...?

Wenn man viel konfigurieren muss, dann setzt das System keiner auf bzw. verwendet es keiner. Wenn es eine sinnvolle Defaultkonfiguration gibt, wird kaum einer die Konfigurierbarkeit nutzen. Der ganze aufwand lohnt also in der Regel nicht. Frage mal potentielle Kunden, was sie denn wirklich konfigurieren können wollen... 

Und Gastredner hat nicht so unrecht... es gut sich (auch hohe) Ziele zu stecken... aber trotzedem geht man erst den ersten Schritt...


----------



## Gast2 (1. Jul 2010)

So ganz nebenbei - das Rad neu erfinden ist meist nicht von Erflog gekrönt. Templates lassen sich z.B. mit bereits etablierten Template Frameworks wie FreeMarker umsetzen. 

Diese Templates kannst du in deinem CMS dann einfach mit einer Standard Text Komponente bearbeiten.

Wenn das ganze wirklich ein Web CMS werden soll musst du dir erstmal auch über die Technik klar werden, z.B. möchtest du auf soetwas wie Struts, GWT oder JSF? Soll alles AJAX basiert sein, oder immer schön gutes altes stateless HTML, usw... Wie willst du mit der Datenbank kommunizieren? Alles selber machen? Oder lieber eine Framework wie Hibernate einsetzen? 

Die Datenbank und Template Sprache ist dabei so ziemlich das letzt was dich erstmal interessieren sollte.

Ergo - einfach mal drauf los entwicklen geht bei einem solchen Projekt nicht. 

Wenn du es ein bisschen planst und dir die Grenzen gut absteckst kannst du allerdigns recht schnell Erfolg haben. ein kleines einfaches CMS bauen. Dabei auf gute Architektur und die richtigen Technologien setzten - dann später erweitern.


----------



## internet (1. Jul 2010)

also darüber bin ich mir auch schon im Klaren.
Hibernate, Richfaces, Spring.

Was mir jedoch den Kopf zerbricht ist das Erzeugen von JAVA - Quellcode:

1. Beispiel:
Wenn ich zB eine HTML - Seite anlegen möchte, die mir alle Kunden ausgibt. 
Dafür benötige ich ja eine List <Kunden> alleKunden o.ä.
Wie erzeuge ich hier dann zB die Liste "*alleKunden*" in meinem Java Code?
Bzw. dann die entsprechende Methode in meiner ManagedBean / Anwendungskern / Datenschicht / Entity - Klasse?


2. Beispiel. 
Wie kann ich durch das Anklicken/ Auswählen / Hinzufügen von Parametern mir eine *IF - Abfrage *erstellen lassen?

Das ist im wesentlichen mein Verständnis - Problem. 
Kann mir hierbei jemand sagen wie soetwas realisierbar ist...


----------



## FArt (1. Jul 2010)

Wenn ich das richtig verstanden habe, geht es um Codergenerierung zur Laufzeit... ein .... gewagter Ansatz.
Ansonsten kann man u.U. mit Transformationen arbeiten (XSLT, Velocity, ...).

Ich würde so weit wie möglich mit generischen Klassen arbeiten und u.U. dynamische Abfragen auf die Datenbank. Das kann Hibernate doch auch, oder?

Siehe mein Posting (und andere) von oben: überdenke deinen Ansatz evtl. noch mal.

Übrigens,


----------



## internet (1. Jul 2010)

wenn ich das ganze mal so grob betrachte - hat das Projekt dann aber unmengen an Parameter bzw. dann in der Datenbank Attribute.

Ist es durch aus normal bei solch großen Projekten (zB auch Studivz, Facebook), dass man mal 100 oder mehr Attribute pro Tabelle hat?

Alleine irgendwelche booleans (anschalten / ausschalten) etc.


----------



## internet (1. Jul 2010)

wenn ich das ganze mal so grob betrachte - hat das Projekt dann aber unmengen an Parameter bzw. dann in der Datenbank Attribute.

Ist es durch aus normal bei solch großen Projekten (zB auch Studivz, Facebook), dass man mal 100 oder mehr Attribute pro Tabelle hat?

Alleine irgendwelche booleans (anschalten / ausschalten) etc.


----------



## FArt (2. Jul 2010)

internet hat gesagt.:


> wenn ich das ganze mal so grob betrachte - hat das Projekt dann aber unmengen an Parameter bzw. dann in der Datenbank Attribute.
> 
> Ist es durch aus normal bei solch großen Projekten (zB auch Studivz, Facebook), dass man mal 100 oder mehr Attribute pro Tabelle hat?
> 
> Alleine irgendwelche booleans (anschalten / ausschalten) etc.



Nein, normal würde ich das nicht bezeichnen. Aus dem Bauch heraus würde ich sagen da sollte man damit rangehen: Normalisierung (Datenbank) ? Wikipedia

Noch mal der dringende Tipp: mache dir über grundsätzliches erst mal Gedanken (s.o.). Deine Gedanken in Richtung Umsetzung führen mangels Wissen und Erfahrung ins Leere.


----------



## internet (2. Jul 2010)

was mich jetzt noch interessiert ist folgendes:

Wenn ich eben mir mein Layout "zusammenklicken" kann:
Also zB ich möchte die Farbe "rot" haben. 
Die Tabelle soll "490px" groß sein usw. 

Speichere ich diese Werte alle in eine Datenbank?
Oder wie macht man das?

Ich meine man kann dies ja über Objekte realisieren - aber wielang lebt so ein Objekt (ist doch wieder nach dem Ausloggen der Session o-ä. weg) Und demnach wird beim erneuten einloggen wieder ein anderes Design angezeigt...


----------



## FArt (2. Jul 2010)

Ja, solche Werte sollte man in irgendeiner Form persistieren, z.B. in einer Datenbank.

Vielleicht sollte man aber auch mit Templates arbeiten... z.B. in Form von XML... Layoutbeschreibungsdateien...


----------



## internet (2. Jul 2010)

Damit habe ich ja dann unzählige Tabellen:


Menu(id,hoehe,breite, farbe, rahmenfarbe, rahmen_enabled,)
Submenu(id,hoehe,breite, farbe, rahmenfarbe, rahmenenabled, menu_fk)


Steuere ich so auch meine komplette CSS - Datei?
Wird das genauso bei CMS wie Joomla etc. gemacht?
Also, dass alles in DB geschrieben wird?


----------



## M.L. (4. Jul 2010)

Statt JDBC kann man auch das Stichwort "Spring JDBCTEmplate" betrachten (wofür man übrigens nicht den vollen Spring Container braucht): Spring + JdbcTemplate + JdbcDaoSupport examples The Spring Jdbc Template for database access - Tutorial


----------



## FArt (5. Jul 2010)

internet hat gesagt.:


> Damit habe ich ja dann unzählige Tabellen:


Das könnte ein Problem werden, wenn deine Finger zum zählen nicht mehr ausreichen.



internet hat gesagt.:


> Menu(id,hoehe,breite, farbe, rahmenfarbe, rahmen_enabled,)
> Submenu(id,hoehe,breite, farbe, rahmenfarbe, rahmenenabled, menu_fk)


Diese Tabellen sind z.B. noch nicht normalisiert.



internet hat gesagt.:


> Wird das genauso bei CMS wie Joomla etc. gemacht?


Nein, die machen das mit MAGIE!

cms open source java - Google-Suche
Mache dir doch mal selber ein Bild davon. Es ist nicht verkehrt von anderen zu lernen.


----------

