# Objekte aus Datenbank löschen



## chrissitina (9. Okt 2008)

hi,

Vllt kann mir ja hier jemand helfen.
Ich versuche serialisierte Objekte in einer Datenbank zu speichern, hibernate will ich nicht benutzen.


```
static final String WRITE_OBJECT_SQL = "INSERT INTO tabelle(name, object_value) VALUES (?, ?)";

	
	  
	  static final String Delete_Object_SQl = "DELETE FROM tabelle WHERE object_value = ?";


  public static long writeJavaObject(Connection conn, Object object) throws Exception {
	    String className = object.getClass().getName();
	    PreparedStatement pstmt = conn.prepareStatement(WRITE_OBJECT_SQL);

	    // set input parameters
	    pstmt.setString(1, className);
	    pstmt.setObject(2, object);
	    pstmt.executeUpdate();

	    // get the generated key for the id
	    ResultSet rs = pstmt.getGeneratedKeys();
	    int id = -1;
	    if (rs.next()) {
	      id = rs.getInt(1);
	    }

	    rs.close();
	    pstmt.close();
	    System.out.println("writeJavaObject: done serializing: " + className);
	    return id;
	  }
	  
	  public static void delete(Object object ){
		  try {
			Connection con = getConnection();
			  PreparedStatement stat = con.prepareStatement(Delete_Object_SQl);
			  stat.setObject(1, object);
			 
			int rs = stat.executeUpdate();
			System.out.print("ES wurde was gemacht");
			  stat.close();
			  con.close();
			  
			  
			  
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		  
	  }

Schreiben klappt wunderbar, beim Löschen bekomme ich keine Fehlermeldung, aber es klappt nicht, dass er die Objekte vergleicht.

Oder sollte ich die ID die Datenbank id selbst noch im Objekt speichern?
und dann mittels ID löschen?

Danke schonmal 

Gruß Tina
```


----------



## maki (9. Okt 2008)

Serialisierung ersetzt keine echte DB und schon gar kein ORM.

Denke dass du auf dem Holzweg bist, ist dir klar dass du die Objekte nie wieder deserialisieren kannst sobald du die zug.  Klasse änderst?


----------



## chrissitina (9. Okt 2008)

ja bin ich,

für ein reines Datenbankmodell ist mein Objekt zu groß, welches aus mehreren Listen, die wiederrum aus Listen bestehen, besteht.
Daher möchte ich es serialisieren, zur Not sind bei Änderungen halt die Datensätze weg, das wäre nicht so schlimm.

Nur um auf meine Frage zurückzukommen:

Wie lösche ich serialisierte Objekte? Hat MYSQL die möglichkeit, so einen vergleich durchzuführen?


----------



## maki (9. Okt 2008)

Datensätze löscht man in SQL immer gleich, ob darin BLOB Spalten sind oder nicht, spielt keine Rolle, solltest halt eine WHERE Klausel haben, ausser du willst die ganze Tabelle leeren.


----------



## Guest (9. Okt 2008)

das habe ich oben soweit schon im quelltext, nur er löscht mir das objekt nicht.


----------



## maki (9. Okt 2008)

Was ist denn object_value?

Ich hoffe nicht das ganze serialisierte Objekt... brauchst schon ein echtes Merkmal, zB die id.


----------



## Guest (9. Okt 2008)

object value ist meine spalte, in der meine objekte als BLOBs gespeichert sind.


----------

