code: private <T> void insertCheckpointData(Object key, T value) {
  		logger.entering(CLASSNAME, "insertCheckpointData", new Object[] {key, value});
  		Connection conn = null;
  		PreparedStatement statement = null;
  		ByteArrayOutputStream baos = null;
  		ObjectOutputStream oout = null;
  		byte[] b;
  		try {
  			conn = getConnection();
  			statement = conn.prepareStatement(INSERT_CHECKPOINTDATA);
  			baos = new ByteArrayOutputStream();
  			oout = new ObjectOutputStream(baos);
  			oout.writeObject(value);
  
  			b = baos.toByteArray();
  
  			statement.setObject(1, key);
  			statement.setBytes(2, b);
  			statement.executeUpdate();
  		} catch (SQLException e) {
  			throw new PersistenceException(e);
  		} catch (IOException e) {
  			throw new PersistenceException(e);
  		} finally {
  			if (baos != null) {
  				try {
  					baos.close();
  				} catch (IOException e) {
  					throw new PersistenceException(e);
  				}
  			}
  			if (oout != null) {
  				try {
  					oout.close();
  				} catch (IOException e) {
  					throw new PersistenceException(e);
  				}
  			}
  			cleanupConnection(conn, null, statement);
  		}
  		logger.exiting(CLASSNAME, "insertCheckpointData");
  	}
docs: insert data to DB table
  
  @param key - the IPersistenceDataKey object
  @param value - serializable object to store
  
  Ex. insert into tablename values(?, ?)