Java objekt in MYSQL auslesen

Status
Nicht offen für weitere Antworten.

sence

Bekanntes Mitglied
Hallo,

ich würde gerne Objecte in der Mysql Datenbank speichern, und habe folgendes bis jetzt:

Java:
		         java.sql.PreparedStatement pstmt= connect.prepareStatement("INSERT INTO user produkte VALUES (?) where user='" user + '");
		                 
		         adminTool.produkt produkt = new adminTool.produkt();
		         produkt.initProdukt("AMD Duron", "254", "30", "Dedicated", "randompw");
		         
		                
		         
		            pstmt.setObject(1, produkt);		            
		            pstmt.executeQuery();

 // Hatte hier auch pstmt.updateQuery(); // aber auch erfolglos
		            
		            pstmt.close();
		           
					String encodedUrl = response.encodeRedirectURL("./showCustomer?kdn='" + kunde +"'");
					response.sendRedirect(encodedUrl);

das ist jetzt etwas, was ich mir aus diesem Forum zusammen gebaut habe.
Habe dies in einem Servlet untergebracht, jedoch beginnt mein Problem ab hier

Java:
		            pstmt.setObject(1, produkt);		            
		            pstmt.executeQuery();

ab dort macht er nicht weiter, bekomme auch keinen Fehler.


dann meine 2. Frage,
was hat es eigentlich mit den Serialisierten objecten aufsich ?
und wieso muss mann ein PreStatement nehmen, ok habe gelesen ist leistungsfähiger, aber wenn ich das auser acht lasse, wie wäre es noch zu realisieren ?

bin ein freund der wenigen codezeilen :- )

Vielen Dank!
 
Zuletzt bearbeitet:

sence

Bekanntes Mitglied
hm hab mir eben das ganze nochmal durch gelesen, ändert nicht meine Ansicht zu meiner Programmierung.

Statement stimmt, jedoch sehe ich nichts, wie es mit dem Objecten funktionieren soll :/
im Forum steht dies auch als Lösung, um Objekte zu speichern, aber bei GalileoComputing steht nichts dazu, somit ist der Thread weiter offen :/

please help


//// wieso meinst du update, statt insert, wenn es noch kein Object zum updaten gibt ? oO
 

The_S

Top Contributor
jedoch sehe ich nichts, wie es mit dem Objecten funktionieren soll :/

Die könntest du Bspw. als Byte-Array (BLOB bzw. CLOB) in die DB schreiben.

//// wieso meinst du update, statt insert, wenn es noch kein Object zum updaten gibt ? oO

Weil ich nicht weiß, ob du updaten oder inserten willst. Bei einem INSERT gibt es keine WHERE Bedingung, bei einem UPDATE schon. Daher dachte ich, dass du evtl. UDPATEN möchtest - anosnsten macht das WHERE keinen Sinn.

Außerdem ist dein INSERT-Statement generell falsch (INSERT INTO user produkte VALUES ... hä?) und du verwendest das PreparedStatement falsch (bitte doch noch einmal nachlesen)

Wenn du ein Update machen möchtest, dann executeUpdate und nicht executeQuery - solltest du auch gelesen haben.
 

sence

Bekanntes Mitglied
schau mal, habe mich an den Thread angelehnt:

http://www.java-forum.org/datenbankprogrammierung/86312-objekte-datenbank-speichern.html

habe es nun wie folgt:

Java:
 try {
        
       
       java.sql.PreparedStatement pstmt= verbindung.prepareStatement("INSERT INTO user produkte VALUES (?)");
       
       class test implements Serializable {
		private static final long serialVersionUID = 1L;
		
		String name;
		String hdd;
		test(String n, String h) {
			this.name = n;
			this.hdd = h;
		}
    	   
       }
             	test t = new test("amd", "80GB");	                
       
          pstmt.setObject(1, t);	

          pstmt.executeUpdate();

          pstmt.close();
    }
    catch (Exception e) {
       e.printStackTrace();
    }

der aufbau sollte richtig sein, aber es will nicht :/

komme gerade irgendwie nicht klar das mit Byte[] hinzubekommen

bei meinem Oben angegebenem Code bekomme ich den Fehler:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'produkte VALUES (_binary'’\0sr\0CDatenbank$1test\0\0\0\0\0\0\0\0L\0hddt\0' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1761)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2046)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1964)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1949)
at CDatenbank.main(CDatenbank.java:57)

:/

dank33333
 

The_S

Top Contributor
Du hast das WHERE zwar im INSERT behoben, aber du hast noch immer eine falsche Syntax (wie bereits mehrfach erwähnt):

was soll "user produkte" sein? Ein Tabellenname mit Leerzeichen?

Das Object direkt zu setzen ist scheinbar auch eine Alternative, ich habs bis jetzt allerdings eher mit nem Byte-Array gemacht.
 

sence

Bekanntes Mitglied
Danke erstmal für die Antworten,

habe ne fertige Tabelle, dort habe ich noch eine Spalte hinzugefügt, (produkte)

nun würde ich gerne sagen:
wo kundennummer = xxxx dort soll er in die Spalte produkte bei dem User das Object hinzufügen.

ist nen Produktobject, welches ich den Benutzer zuweisen möchte :rtfm:

deswegen hatte ich auch die Where clausel drin :/
 

sence

Bekanntes Mitglied
Ok, soweit funktionert alles jedoch hab ich nun nur noch ein Problem:

Java:
java.sql.PreparedStatement st = verbindung.prepareStatement("SELECT produkt FROM user WHERE kdn=10104");
		ResultSet rs = st.executeQuery();
		produkt p = null;
			rs.next();
				Object obj = rs.getObject(1);
				p = (produkt) obj;
		
			System.out.println("name:" + p.ServerName);
    	}catch (Exception e) {
       e.printStackTrace();
    }

wenn ich nun das Object auslesen will erhalte ich den Fehler:

java.lang.ClassCastException: [B cannot be cast to produkt
at CDatenbank.main(CDatenbank.java:36)

Das object wurde aber richtig in der DB gesetzt

das wäre es dann für erstmal *hoff*

Vielen Dank bis dato!
 

sparrow

Top Contributor
1. Beschäftige dich mit den Richtlinien für das Programmieren in Java: Klassennamen haben einen großen Anfangsbuchstaben, Instanzvariablen werden klein geschrieben.
Code:
Produkt produkt = new Produk();

2. Beschäftigt dich mit SQL. Lerne die Ausdrücke. Lerne was Relationen, Tupel und Normalisierung sind.

3. Brauchen wir den Code vom Schreiben und vom Lesen des Datensatzes um den Fehler zu finden.
 
Zuletzt bearbeitet:

sence

Bekanntes Mitglied
1. Beschäftige dich mit den Richtlinien für das Programmieren in Java: Klassennamen haben einen großen Anfangsbuchstaben, Instanzvariablen werden klein geschrieben.
Code:
Produkt produkt = new Produkt();
------------------------------------
Habe ich lange hinter mir, es sind Richtlinien, jedoch keine Pflicht für einen Reibungslosen ablauf.
Wenn ich zu 100 % falsch liege sage es bitte, jedoch speichere ich lieber den Platz für meine Lpic ausbildung :- )
-----------------------------------------------
2. Beschäftigt dich mit SQL. Lerne die Ausdrücke. Lerne was Relationen, Tupel und Normalisierung sind.
---------------------------
Wofür, meine Statements führen zum Ziel und zwar zur richtigen Colum. ?
------------------------------------------------------------------------------


3. Brauchen wir den Code vom Schreiben und vom Lesen des Datensatzes um den Fehler zu finden.
--------------------------------------
Stehen doch alle oben im Thread oO

aber hier nochmal:

Object einfügen !!!FUNKTIONIERT!!!
Java:
		         java.sql.PreparedStatement pstmt= connect.prepareStatement("UPDATE user SET produkt = (?) where kdn=(?)");
		                 
		         adminTool.produkt produkt = new adminTool.produkt();
		         produkt.initProdukt("AMD Duron", "254", "30", "Dedicated", "randompw");
		         		                
		         
		            pstmt.setObject(1, produkt);
		            pstmt.setString(2, kunde);
		            pstmt.executeUpdate();		            
		            pstmt.close();

Auslesen !!!kann nicht gecasted werden!!!! (MYSQL)

java.lang.ClassCastException: [B cannot be cast to produkt
at CDatenbank.main(CDatenbank.java:36)

Java:
		java.sql.PreparedStatement st = verbindung.prepareStatement("SELECT produkt FROM user WHERE kdn=104");
		ResultSet rs = st.executeQuery();
		produkt p = null;
			rs.next();
				Object obj = (Object) rs.getObject(1);
				p = (produkt) obj;
 

tfa

Top Contributor
Bist du sicher, dass du wirklich serialisierte Objekte in eine SQL-Datenbank speichern willst? Es mag Fälle geben, wo man das machen will, aber üblich ist das ganz und gar nicht. Normalerweise speichert man den Inhalt der Objekte Attribut-weise in eine normale Tabelle, also die Strings in VARCHAR-Spalten, die ints in Integer-Spalten etc. Das kannst mit normalem JDBC "von Hand" machen (für den Anfang ist das einfacher), oder du verwendest ein ORM-Framework wie Hibernate.
 

sparrow

Top Contributor
Entschuldige meine Ehrlichkeit, aber das was du da tust ist Blödsinn.
Und ich meine nicht den Java-Code sondern die Art wie du die Datenbank nutzt.

Bitte beschäftige dich damit warum es Relationale Datenbanken gibt und wie man sie benutzt.

Mir ist es gerade zu mühselig aufzuzählen warum deine Vorgehensweise ganz einfach falsch ist.
Und dann erstmal Datenbankmodell entwerfen.

Edit: tfa war schneller und hat es netter formuliert ;)
 

sence

Bekanntes Mitglied
sagen wir es so:

Jeder kunde bestellt z.b einen Server, dies stellt ein Object dar, in welchem alle einzelheiten des Servers auszulesen sind.
Würde ich dies wie beschrieben aufsplitten wäre dies nicht gerade Objektiv, und sehr umständlich wieder auszufragen.

A) gibt es eine Möglichkeit mein Object wieder herauszuholen und wieso streitet ihr euch bei meinem Thread, bei dem anderen hast du auch ohne zu fragen geholfen. oO :D

B) wie würdet Ihr es denn Lösen, wenn Kunden z.b mehre Produkte haben, wo man jedesmal alle daten auslesen muss.
Z.B
ein Kunde hat 5 Server, willst du für jeden Kunden eine Tabelle anlegen oder woot, ok übertrieben geht auch anders aber ich wollte nur meinen Sinn mal nieder schreiben


Das gescheiteste wäre natürlich mit JDO dies zu realisieren und dme PersistenceManager, nur um das gerade zu erlernen fehlt mit die Zeit :/

deswegen fixiere ich die Möglichkeit von dir, aus dem anderem Thread.

Aber nun die Goldene Frage:
Wieso wieder zurück in die Steinzeit gehen und wieder alles neu bauen, wenn man Objekte doch speichern kann, welche die Arbeit um ein vielfaches erleichtern ?

greetz

Achja P.S.

Um Persistenz für ein Objekt zu erreichen, kann es serialisiert werden. Hier wird der komplette Zustand des Objektes, inklusive aller referenzierten Objekte, in einen Datenstrom umgewandelt, der anschließend auf ein Speichermedium geschrieben wird.

jap das will ich! :)
 
Zuletzt bearbeitet:

tfa

Top Contributor
B) wie würdet Ihr es denn Lösen, wenn Kunden z.b mehre Produkte haben, wo man jedesmal alle daten auslesen muss.
Z.B
ein Kunde hat 5 Server, willst du für jeden Kunden eine Tabelle anlegen oder woot, ok übertrieben geht auch anders aber ich wollte nur meinen Sinn mal nieder schreiben
Kapier ich nicht.
Du hast eine Tabelle mit Kunden und eine mit Produkten. Eine Abbildungstabelle ordnet die Produkte den Kunden zu. Wo ist das Problem?

Was machst du mit deiner Lösung, wenn 100 Kunden das selbe Produkt haben? 100 mal das gleiche Objekt serialisiert in die DB schreiben?
Was passiert, wenn im Produktdatensatz was geändert werden muss? Alle Objekte deserialisieren, anpassen und wieder zurück schreiben?
Was machst du, wenn du alle Kunden finden willst, die Produkt xyz bestellt haben?

Das gescheiteste wäre natürlich mit JDO dies zu realisieren und dme PersistenceManager, nur um das gerade zu erlernen fehlt mit die Zeit :/
Wenn du eine vernünftige Lösung willst, wirst du dir die Zeit nehmen müssen.
 

sence

Bekanntes Mitglied
ja mir fehlen noch 5 Kapitel @ j2ee SRY, jedoch frage ich nochmal, habt ihr ein Problem für meine Lösung, das ich das Object nicht heraus bekomme oder nicht.

ja es führen tausend wege nach rom, und ja dann wäre meine Lösung nicht gut, wenn ich etwas ändern müsste, jedoch würde ich dies gerne nun so fertig bekommen.
zumal ich dann auch etwas gelernt habe, und werde es dann ggf umschreiben sobald zeit da ist.

Nur das problem ist wenn man arbeitet, studiert und nebenher noch programmiert ist die zeit eng, deshalb please wie kann ich den Cast fehler beheben
 

sparrow

Top Contributor
Jeder kunde bestellt z.b einen Server, dies stellt ein Object dar, in welchem alle einzelheiten des Servers auszulesen sind.
Würde ich dies wie beschrieben aufsplitten wäre dies nicht gerade Objektiv, und sehr umständlich wieder auszufragen.
Ein KUNDE hat SERVER die KOMPONENTEN enthalten.
Das heißt du brauchst eine Tabelle für Kunden, eine für die Server und eine für Komponenten. Jede einzelne stellt eine Relation dar.

A) gibt es eine Möglichkeit mein Object wieder herauszuholen und wieso streitet ihr euch bei meinem Thread, bei dem anderen hast du auch ohne zu fragen geholfen. oO :D
Falls du mich meinst: Ich helfe dir hier gerade auch.
Ich zieh mal einen Vergleich zu Realität: Normalerweise steigt man in ein Auto, lässt die Zündung an und gibt Gas um vorwärts zu kommen. Du versuchst gerade das Auto durch Schieben vorwärts zu bekommen. Ich könnte dir natürlich dabei helfen, ich könnte dich aber darauf hinweisen, dass das was du mit dem Auto machst nicht Sinn des Autos ist.
Oder anders: Das was du da versuchst ist nicht Sinn einer Relationalen Datenbank.
Erklär mir mal wie du alle Server heraus finden willst die einen Opteron-Prozessor haben. ALLE Datensätze holen, deserialisieren und dann durchsuchen? Nein nein, das willst du nicht!


B) wie würdet Ihr es denn Lösen, wenn Kunden z.b mehre Produkte haben, wo man jedesmal alle daten auslesen muss.
Z.B
ein Kunde hat 5 Server, willst du für jeden Kunden eine Tabelle anlegen oder woot, ok übertrieben geht auch anders aber ich wollte nur meinen Sinn mal nieder schreiben
Nein, natürlich nicht.
Wie gesagt: Beschäftige dich mit Relationalen Datenbanken. Die gibt es nicht umsonst.


deswegen fixiere ich die Möglichkeit von dir, aus dem anderem Thread.
Die ist aber nicht für das gedacht was du hier machst.

Aber nun die Goldene Frage:
Wieso wieder zurück in die Steinzeit gehen und wieder alles neu bauen, wenn man Objekte doch speichern kann, welche die Arbeit um ein vielfaches erleichtern ?
Dann reden wir über eine Objektorientierte Datenbank. Darin kann man tatsächlich Objekte speichern. Dann bist du bei mySQL aber falsch, denn mySQL ist eine relationale Datenbank. Du kannst aber einen O/R-Mapper wie Hibernate verwenden um eine entsprechende Funktionalität zu erhalten.

Um Persistenz für ein Objekt zu erreichen, kann es serialisiert werden. Hier wird der komplette Zustand des Objektes, inklusive aller referenzierten Objekte, in einen Datenstrom umgewandelt, der anschließend auf ein Speichermedium geschrieben wird.

jap das will ich! :)
Nein, willst du nicht.
Du willst eine Datenbank, keinesfalls Serialisierung.
Auch Objektorientierte Datenbanken arbeiten nicht mit Serialisierung sondern bilden Variablen auf Feldern ab.




Nur damit wir uns richtig verstehen:
Angenommen du willst Kunden mit den Angaben: ID, Name, Straße, PLZ, Ort speichern sieht die Relation so aus, dass du eine Tabelle mit den Feldern ID, Name, Straße, PLZ und Ort hast. NICHT eine Tabelle mit ID und einem BLOB mit einer serialisierten Java-Klasse darin.
 

tfa

Top Contributor
deshalb please wie kann ich den Cast fehler beheben
Offensichtlich versuchst du ein byte-Array in ein "produkt"-Objekt zu casten. Das funktioniert nicht, da ein byte[] kein produkt ist. Das Array enthält die serialisierten Daten des Objekts. Das musst du erst deserialisieren, und zwar mit einem ObjectInputStream.
 

sence

Bekanntes Mitglied
ok ok ich gebe mich geschlagen ihr habt recht, aber das Angebot dass du mir hilfst mein Auto schieben, nehme ich gerne an, aber zum glück brauch ich das nicht -.-

gut dann werde ich nun mich damit auseinander setzten ,)

Aber trotzdem, nur aus intresse:
wieso ist der Cast fehlgeschlagen ?

falls ich mal dies dann wirklich benötigen sollte, und den selben Fehler habe, dass ich dann an diesen Threadzurück denken kann :)

Dann sag ich mal vielen dank! und baue mir etwas, damit ich dies abbilden kann.
ja mit den Kunden habe ich es so realisiert, nein nicht mit der id und dem Object -.-
 

sparrow

Top Contributor
Wenn du Auto fahren willst kannst du hier auch gerne fragen was du abbilden möchtest.
Wir helfen gerne ein Datenbankmodell zu erstellen bzw. dir Tipps zu geben.
 

sence

Bekanntes Mitglied
ok, du hast natürlich recht, es ist besser zu verwalten.

Könntet Ihr mir nen Tip geben, wie ich das Model aufbauen sollte, um die Produkte für jeden kunden in der Datenbank zu hinterlegen.

Mache mir gerade nen paar Zeichnungen wie ich es am besten realisieren könnte, jedoch weiß ich gerade nicht, wie ich mehrere produkte einem Kunden zu weißen kann und jedoch, jedes einzelne editieren kann :rtfm:

Vielen dank!
 

sparrow

Top Contributor
Ich bin mir nicht ganz sicher was du vorhast, aber ich gehe mal von folgendem aus:
Es gibt einen Hardwarehersteller der PC-Systeme baut.

Was wollen wir Abbilden:
Wir wollen Komponenten in Servern verbauen.

Zuerst brauchen wir eine Tabelle KOMPONENTEN die alle Komponenten enthält die verbaut werden können. Eine weitere Tabelle SERVER die die Server darstellt indem Sie auf die Komponenten verweist.

Mal folgendes für Komponenten:
Code:
postgres=# SELECT * FROM komponenten;
 id |               name               
----+----------------------------------
  1 | 50 GB Seagate
  2 | Athlon XP+ 2500 Prozesso 123 FSB
  3 | Intel Mainboard

Dann brauchen wir die Datenbank SERVER_REL in etwa wie folgt:
Code:
postgres=# SELECT * FROM server_rel;
 id | komponente 
----+------------
  1 |          1
  1 |          2
  2 |          3

Du siehst, unsere Servertabelle ist eigentlich nur eine Verbindungstabelle zwischen Komponenten und Server. Eigentlich müsste es noch eine Tabelle geben die die IDs für die Server erstellt. Dort wo man quasi auch Notizen oder Namen für die Server hinterlegen kann:
Code:
postgres=# SELECT * FROM server;
 id | name 
----+------------
  1 |    Erster Server
  2 |    Zweiter Server



Was hat der Server 1 für Komponenten (Name)?:
Code:
postgres=# SELECT komponenten.name FROM server_rel LEFT JOIN komponenten ON (server_rel.komponente = komponenten.id) WHERE server_rel.id = 1;
               name               
----------------------------------
 50 GB Seagate
 Athlon XP+ 2500 Prozesso 123 FSB
(2 rows)

Vorteil: für jeden Artikel gibt es einen Eintrag in der Datenbank. Er wird dann nur dem entsprechenden Servern zugeordnet.
 
Zuletzt bearbeitet:

sence

Bekanntes Mitglied
schonmal vielen dank, solangsam kann ich mir damit was bauen, ohje dass wird eine Denkerei :(

Das System welches ich gerade schreibe soll folgende funktionalität bieten:

Ich biete Hosting diensleitungen an, (Web, mail, ftp) und Dedicated (root) server
dazu kommen noch zusatzdienstleistungen wie Clustering, dann ggf noch zuzätzliche Hardware und co.

Nun kam ich deswegen auf die Idee mit Objekten zu arbeiten, da jeder Server z.B:
- Servername
- Server Adresse (IP)
- Recusiver DNS eintrag
- cpu gesch.
- vorhandener Ram
- Festplatten anzahl und größe beinhaltet
- OS (Betriebssystem)

und wenn ein Kunde nun 2 oder Server oder sonstige Produkte bestellt, müssen diese 2 Produkte bei ihm abgebildet werden.

dafür dachte ich Objekte, nun sehe ich es ein, dass es ein Rießiger verwaltungsaufwand ist dies mit Objekten zu realisieren, wenn sich etwas ändert.

von der erschaffung finde ich es mit Objekten leichter, aber im nachhinein ist es mit der bearbeitung natürlich leichter Ohne Objekte.

Mit freundlichen Grüßen

Sence
 

sparrow

Top Contributor
An sich hast du ja recht. Aus diesem Grund gibt es ja Hibernate das dir hilft Objekte direkt in der Datenbank abzubilden und dir das abzunehmen. Das braucht natürlich ein wenig Einarbeitungszeit.

Ansonsten kannst du dir merken: jedes Objekt muss auch in einer Relationalen Datenbank ebenso abgebildet werden wie als Objekt. So geht Hibernate ja auch vor. Das was man mit getter/setter ändertr bekommt ein Feld in der Datenbank.
 

sence

Bekanntes Mitglied
erstmal danke danke danke!!

sry wegen vorhin, jedoch wollte ich nicht alles preisgeben ,)

was würdest du nun vorschlagen, doch mit objekten zu arbeiten, oder mit der relationalen db

mein Gebiet ist eigentlich Linux und Systemadministration, mache Java nur nebenher.
habe bis jetzt J2SE komplett abgeschlossen und bin in der hälfte von J2EE, aber nun kommt das was mir noch fehlt, aber da ich gerade einiges an Servern zu arbeiten habe, habe ich nicht viel Zeit mich durch zu lesen, da ich noch das Studium nebenher mache :(

deswegen war ich zimmlich fixiert :/

Mit freundlichen Grüßen

Sence
 

sparrow

Top Contributor
Kein Grund sich zu entschuldigen, dass ist schon ok. Ich bin nur im Moment ein Freund klarer Worte.
Falls du irgend etwas studierst was mit -nformatik aufhört musst du dich früher oder später eh mit Datenbanken auseinander setzen.
Ich würde vorschlagen, dass du dich kurz in relationale Datenbanken einarbeitest. Der Schritt zu Hibernate ist dann nur noch ein kleiner.

Um ehrlich zu sein weiß ich gar nicht womit ich mal die Anfänge gemacht habe. Vertieft habe ich das Ganze aber im Studium.
 

sence

Bekanntes Mitglied
ne, Studiere gerade Linux Systemadministration, Lpic 1,2 und demnächst 3

mache es als Studium, da ich nebenher noch Netzwerkadministration mache, bleibt leider nicht als sooviel zeit für Java ,)

deswegen habe ich nur das gelernt, was in den Büchern darüber Stand, die Basics habe ich soweit intus, aber wenn es dann mit Join und co los geht, bin ich shcon wieder zu weit entfernt.
Netzwerk, und Linux :O
und durch den bestehenden aufbau der Unternehmung, ist nun noch weniger Zeit da, aber ich muss alles alleine Programmieren .....
da mein Kollege sich gerade in nem asp Studium befindet :O

Also würdest du mir Hibernate an herz legen dafür ?

oder eher mit den Tabellen realisieren (ich bin zwar kein Freund davon da ich viel dafür lernen muss und meine Zeit ....... naja) aber ohne bestehendes Portal geht es natürlich auch nicht!

greets
 

sparrow

Top Contributor
Relationale Datenbanken. Danach erst Hibernate.
Falls du daran keinen Spaß hast, gib es den Kollegen ;)
Nein ernsthaft: das mit den Joins brauchst du auch mit Hibernate, daher solltest du dir das mit den Relationalen Datenbanken einfach anschauen. Das ist gar nicht schwer und gar nicht viel. Und die Grundlagen kannst du auch als Sysadmin gut gebrauchen.
 

sence

Bekanntes Mitglied
Hallo nochmal :- )

Also arbeite mich nun wie du sagtest nochmal von Grund auf in sql hinein, und erst dann mach ich mit hibernate weiter :- )

jedoch eine kurze frage, auch wenn ich dies mit Hibernate bald realisiere oder einem anderem System wie Hibernate (muss mich erstmal hinein arbeiten)

stell ich mir trotzdem immer noch die Frage, wie bekomme ich auf die "einfache" art das Object aus der Datenbank wieder heraus.

Habe es mit dem Input Stream versucht aber bekomme jedoch nen fehler dass der byte nicht zu object casten kann. ( brauche dafür noch ein erfolgserlebnis *g*)

der Type ist Blob, mache auch gerne Byte oder etwas anderes draus, (soweit bin ich noch nicht erst 4 Kapitel @ sql :D )
kannst du mir nur sagen bitttte wie ich dies auf die 'unschöne' art auslesen kann.

hatte es so versucht:
Java:
		java.sql.PreparedStatement st = connect.prepareStatement("SELECT produkt FROM user WHERE kdn='" + kdn + "'");
		ResultSet rs = st.executeQuery();
		produkt p = null;
		while(rs.next()) {
		Object object = rs.getObject(1);
		p = (produkt) object;
aber das ging nicht, da er sagt b cannot be cast to object, wie ich nun herausgefunden habe heißt b -> Byte.

und mit den Input stream komme ich nicht klar, würde nur gerne dies noch erleben, dass es klappt, und ich dies für irgendwann mal weiß :D

Vielen Dank für deine Infos und Argumentationen!

Lg Marco
 

sence

Bekanntes Mitglied
Ok, brauchst nicht mehr, habe es nun...

für jeden den es Interresiert das Object wieder in seinen alten Zustand zu bekommen ist die Lösung wie folgt:

rs.next;
InputStream is = rs.getBlob(1).getBinaryStream();
ObjectInputStream ois = new ObjectInputStream(is);
Object x = ois.readObject();
DeineKlasse DKName = (DeineKlasse) x;
DKName.funktion;
 

sence

Bekanntes Mitglied
jo, hatte es gelesen gehabt, hatte aber den Weg gesucht, nun hab ich ihn, und poste den kompletten weg. :- )
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Java-Objekt dynamisch aus Datenbanktabelle erzeugen? Datenbankprogrammierung 4
M Java Objekt in Datenbank schreiben :( Datenbankprogrammierung 8
Juelin Java und MySQL MariaDB - WHERE-Klausel Datenbankprogrammierung 17
P Reicht finally nicht um DB connections zu schließen in (altem) Java? Datenbankprogrammierung 4
A Java DB Server lässt sich nicht starten Datenbankprogrammierung 3
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
U SQL Server mit Java verbinden Datenbankprogrammierung 5
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
S Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht Datenbankprogrammierung 6
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Noobfrage: Konvertierung von SQL-Datentyp 'timestamp with time zone' in Java-Datentyp Datenbankprogrammierung 3
Zrebna Lediglich interne DB-Verbindungen (Connections) auslesen - mittels Java Datenbankprogrammierung 4
berserkerdq2 Was genau muss ich bei date eingeben, wenn ich in Java eine Spalte definiere, die date ist? Datenbankprogrammierung 1
berserkerdq2 Was kann passieren, wenn ich in java einstelle, dass der Fremdschüssel ein Attribut ist, welches selber kein Primärschlüssel ist? Datenbankprogrammierung 4
berserkerdq2 Foreign key einstellen java Datenbankprogrammierung 4
nikgo Java SQL Ausgabe in Liste o.ä. abspeichern um mit dem Ergbnis "zu arbeiten"? Datenbankprogrammierung 5
S Datenbankprogrammierung in Java unter NetBeans 12 funktioniert nicht! Datenbankprogrammierung 1
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
S ODBC Treiber in Java Editor einbinden Datenbankprogrammierung 3
H Oracle Resize eines Images in Java und Rückgabe des Image als BLOB an die Oracle Datebank Datenbankprogrammierung 14
H Java Class zum komprimieren von Jpeg-Images zum Einbinden in Oracle DB - Bild als blob (in und out) Datenbankprogrammierung 23
V SQLite java.sql.SQLException: no such column: Datenbankprogrammierung 18
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
D Daten aus der Firebase-Echtzeitdatenbank abfragen und in Variablen speichern (JAVA) Datenbankprogrammierung 0
Slaylen Java List Suchen mit eigenem Generischen Datentyp Datenbankprogrammierung 10
N java sql abfrage bestimmer Datumszeitraum Datenbankprogrammierung 9
D SQL Server Android App: 'int java.lang.String.length()' on a null object reference Datenbankprogrammierung 15
P USER Management in SQL übergreifend auf JAVA Programm Datenbankprogrammierung 1
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
N Java Abfrage über GUI, Daten hinzufügen Datenbankprogrammierung 54
N Java, sql, jar, JDBC-Treiber in Classpath Datenbankprogrammierung 8
N java SQL JAR - Probleme Datenbankprogrammierung 18
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
N SQL-Statement Java Variable in SQL DB einfügen Datenbankprogrammierung 1
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
T Java Spiel Daten speichern Datenbankprogrammierung 1
C Java MySQL check if value exists in database Datenbankprogrammierung 2
N Sqlite DB mit Java wird auf Linuxsystem nicht gefunden Datenbankprogrammierung 9
L Mybatis Datenbankabfragen in Java Datenbankprogrammierung 1
H MariaDB-Zugriff mittels Java SE Datenbankprogrammierung 3
J Java fügt Datensätze ein aber diese werden nicht richtig abgefragt Datenbankprogrammierung 3
S Datenbank MySQL und Java Datenbankprogrammierung 8
S Beispiel-Blockchain + GUI mit Java erstellen Datenbankprogrammierung 0
P Adressadministration mit Java und mySQL Datenbankprogrammierung 14
Trèfle SQLite SQL-Java Änderungen ausgeben Datenbankprogrammierung 1
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
A MySQL Select und Insert in Java Datenbankprogrammierung 15
C Derby/JavaDB Auf Variable aus Link in java server page zugreifen Datenbankprogrammierung 4
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
F MySQL Einfügen von Datensätzen über Java Datenbankprogrammierung 8
B CSV in Java einbinden und Rechnung Datenbankprogrammierung 7
L Speicherverbrauch Java Anwendung mit einer Datenbankanbindung Datenbankprogrammierung 19
X MySQL Java hat keinen Zugriff auf MySQL Datenbankprogrammierung 9
L Java- Zähle alle Werte aus der Tabelle von aktiver Zelle Datenbankprogrammierung 12
S Datenbank/Java true/false Datenbankprogrammierung 8
S Java und SQL-Befehle Datenbankprogrammierung 6
L INSERT INTO Befehl in Java Datenbankprogrammierung 8
L Datenbankprogrammierung mit Java und phpMyAdmin Datenbankprogrammierung 4
Korvinus Java mit Cassandra verbinden Datenbankprogrammierung 18
M SQL-Statement SQL mit Java, Update Fehler Datenbankprogrammierung 1
D Installation von MariaDB in java und eclipse Datenbankprogrammierung 2
H Datenbank Export mit Java Datenbankprogrammierung 3
I MariaDB-Verbindung in JAVA Datenbankprogrammierung 11
L Oracle Datenbank über Java aufrufen Datenbankprogrammierung 29
W Daten in Java intern abfragen Datenbankprogrammierung 1
W MySQL Ausgabe von Datenbank in Java-App Datenbankprogrammierung 6
D Java Datenbanken Datenbankprogrammierung 1
Y H2 H2 foreign key in Spark Java ausgeben Datenbankprogrammierung 1
J Java Eclipse Hilfe beim Programmieren Datenbankprogrammierung 7
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
R Java-Befehle/Operatoren für copy&paste Datenbankprogrammierung 2
C Mit asm laufende Java Anwendung manipulieren Datenbankprogrammierung 1
W Wie liest dieses Java-Programm der Compiler? Datenbankprogrammierung 3
K Java Datenbank auslesen Datenbankprogrammierung 8
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
K HSQLDB .sql Script Aufruf über Java Datenbankprogrammierung 7
B Java Programm und Dantebank umlagern Datenbankprogrammierung 25
B MySQL bplaced Datenbank mit Java ansprechen Datenbankprogrammierung 11
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
F Java Objekte in einer Datenbank speichern Datenbankprogrammierung 4
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
B Probleme mit java.sql.SQLException: ResultSet closed Datenbankprogrammierung 21
O PostgreSQL Java Row Index erhalten Datenbankprogrammierung 1
dzim Cassandra Cluster DB und der Java-Treiber Datenbankprogrammierung 1
H Entity in Java implementieren Datenbankprogrammierung 13
V Fehler beim Generierung Fehler beim Generierung java.lang.ArrayIndexOutOfBoundsException: 0 Datenbankprogrammierung 12
J mySQL- Java Application - Zugriff über Internet Datenbankprogrammierung 3
D MySQL Many to Many Tabellen in Java abbilden? Datenbankprogrammierung 4
P Datanbank für Java-Programmierung Datenbankprogrammierung 10
F Java SQLite Error Datenbankprogrammierung 19
F SQL Datenbank an Java Code anbinden Datenbankprogrammierung 5
J Java 8 und Microsoft Access Database-Dateien(mdb) Datenbankprogrammierung 1
H HSQLDB Beim öffnen folgender Fehler: ... java.lang.NullPointerException Datenbankprogrammierung 1
H SHOW Tables in Java/MySQL Datenbankprogrammierung 8
M Verbindung von Java Programm zur Acccess Datenbank (mdb-Datei) Datenbankprogrammierung 0
M Feedback für neues Buch über "Java und Datenbanken" erwünscht Datenbankprogrammierung 8
M Wie übergebe ich Datenbankobjekte aus einer sql-Datenbank einer Java Klasse bzw. Instanz Datenbankprogrammierung 7
D Zeit von SQL nach Java Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben