Mega Code Archive

 
Categories / Java / Database SQL JDBC
 

How to serializede-serialize a Java object to the MySQL database

/*  * mysql> CREATE TABLE java_objects (   * id INT AUTO_INCREMENT,   * name varchar(128),   * object_value BLOB,   * primary key (id));  **/ import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.Date; import java.util.List; public class SerializeJavaObjects_MySQL {   static final String WRITE_OBJECT_SQL = "INSERT INTO java_objects(name, object_value) VALUES (?, ?)";   static final String READ_OBJECT_SQL = "SELECT object_value FROM java_objects WHERE id = ?";   public static Connection getConnection() throws Exception {     String driver = "org.gjt.mm.mysql.Driver";     String url = "jdbc:mysql://localhost/databaseName";     String username = "root";     String password = "root";     Class.forName(driver);     Connection conn = DriverManager.getConnection(url, username, password);     return conn;   }   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 Object readJavaObject(Connection conn, long id) throws Exception {     PreparedStatement pstmt = conn.prepareStatement(READ_OBJECT_SQL);     pstmt.setLong(1, id);     ResultSet rs = pstmt.executeQuery();     rs.next();     Object object = rs.getObject(1);     String className = object.getClass().getName();     rs.close();     pstmt.close();     System.out.println("readJavaObject: done de-serializing: " + className);     return object;   }   public static void main(String args[])throws Exception {     Connection conn = null;     try {       conn = getConnection();       System.out.println("conn=" + conn);       conn.setAutoCommit(false);       List<Object> list = new ArrayList<Object>();       list.add("This is a short string.");       list.add(new Integer(1234));       list.add(new Date());       long objectID = writeJavaObject(conn, list);       conn.commit();       System.out.println("Serialized objectID => " + objectID);       List listFromDatabase = (List) readJavaObject(conn, objectID);       System.out.println("[After De-Serialization] list=" + listFromDatabase);     } catch (Exception e) {       e.printStackTrace();     } finally {       conn.close();     }   } }