Mega Code Archive

 
Categories / Java / Database SQL JDBC
 

Serialized And Deserialize Object Oracle

/* Code revised from  JDBC Recipes: A Problem-Solution Approach # By Mahmoud Parsian # ISBN: 1-59059-520-3 # 664 pp. # Published: Sep 2005 publisher: apress.com */ import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import oracle.sql.BLOB; /**** CREATE TABLE java_objects (object_id NUMBER, object_name varchar(128), object_value BLOB DEFAULT empty_blob(), primary key (object_id)); SQL> desc java_objects;  Name                                      Null?    Type  ----------------------------------------- -------- ----------------------------  OBJECT_ID                                 NOT NULL NUMBER  OBJECT_NAME                                        VARCHAR2(128)  OBJECT_VALUE                                       BLOB SQL> select SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT_BY, LAST_NUMBER from  user_sequences; SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY LAST_NUMBER ------------------------------ ---------- ---------- ------------ ----------- ID_SEQ                                  1 1.0000E+27            1          21 JAVA_OBJECT_SEQUENCE                    1 1.0000E+27            1           1 */ public class Main {   public static void main(String[] args) throws Exception {     String WRITE_OBJECT_SQL = "BEGIN "         + "  INSERT INTO java_objects(object_id, object_name, object_value) "         + "  VALUES (?, ?, empty_blob()) " + "  RETURN object_value INTO ?; " + "END;";     String READ_OBJECT_SQL = "SELECT object_value FROM java_objects WHERE object_id = ?";     Connection conn = getOracleConnection();     conn.setAutoCommit(false);     List<Object> list = new ArrayList<Object>();     list.add("This is a short string.");     list.add(new Integer(1234));     list.add(new java.util.Date());     // write object to Oracle     long id = 0001;     String className = list.getClass().getName();     CallableStatement cstmt = conn.prepareCall(WRITE_OBJECT_SQL);     cstmt.setLong(1, id);     cstmt.setString(2, className);     cstmt.registerOutParameter(3, java.sql.Types.BLOB);     cstmt.executeUpdate();     BLOB blob = (BLOB) cstmt.getBlob(3);     OutputStream os = blob.getBinaryOutputStream();     ObjectOutputStream oop = new ObjectOutputStream(os);     oop.writeObject(list);     oop.flush();     oop.close();     os.close();     // Read object from oracle     PreparedStatement pstmt = conn.prepareStatement(READ_OBJECT_SQL);     pstmt.setLong(1, id);     ResultSet rs = pstmt.executeQuery();     rs.next();     InputStream is = rs.getBlob(1).getBinaryStream();     ObjectInputStream oip = new ObjectInputStream(is);     Object object = oip.readObject();     className = object.getClass().getName();     oip.close();     is.close();     rs.close();     pstmt.close();     conn.commit();     // de-serialize list a java object from a given objectID     List listFromDatabase = (List) object;     System.out.println("[After De-Serialization] list=" + listFromDatabase);     conn.close();   }   private static Connection getHSQLConnection() throws Exception {     Class.forName("org.hsqldb.jdbcDriver");     System.out.println("Driver Loaded.");     String url = "jdbc:hsqldb:data/tutorial";     return DriverManager.getConnection(url, "sa", "");   }   public static Connection getMySqlConnection() throws Exception {     String driver = "org.gjt.mm.mysql.Driver";     String url = "jdbc:mysql://localhost/demo2s";     String username = "oost";     String password = "oost";     Class.forName(driver);     Connection conn = DriverManager.getConnection(url, username, password);     return conn;   }   public static Connection getOracleConnection() throws Exception {     String driver = "oracle.jdbc.driver.OracleDriver";     String url = "jdbc:oracle:thin:@localhost:1521:databaseName";     String username = "userName";     String password = "password";     Class.forName(driver); // load Oracle driver     Connection conn = DriverManager.getConnection(url, username, password);     return conn;   } }                          SerializedAndDeserializeObjectOracle.zip( 3,855 k)