DBWritable.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:2k
源码类别:

网格计算

开发平台:

Java

  1. package org.apache.hadoop.mapred.lib.db;
  2. import java.sql.PreparedStatement;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import org.apache.hadoop.io.Writable;
  6. /**
  7.  * Objects that are read from/written to a database should implement
  8.  * <code>DBWritable</code>. DBWritable, is similar to {@link Writable} 
  9.  * except that the {@link #write(PreparedStatement)} method takes a 
  10.  * {@link PreparedStatement}, and {@link #readFields(ResultSet)} 
  11.  * takes a {@link ResultSet}. 
  12.  * <p>
  13.  * Implementations are responsible for writing the fields of the object 
  14.  * to PreparedStatement, and reading the fields of the object from the 
  15.  * ResultSet. 
  16.  * 
  17.  * <p>Example:</p>
  18.  * If we have the following table in the database :
  19.  * <pre>
  20.  * CREATE TABLE MyTable (
  21.  *   counter        INTEGER NOT NULL,
  22.  *   timestamp      BIGINT  NOT NULL,
  23.  * );
  24.  * </pre>
  25.  * then we can read/write the tuples from/to the table with :
  26.  * <p><pre>
  27.  * public class MyWritable implements Writable, DBWritable {
  28.  *   // Some data     
  29.  *   private int counter;
  30.  *   private long timestamp;
  31.  *       
  32.  *   //Writable#write() implementation
  33.  *   public void write(DataOutput out) throws IOException {
  34.  *     out.writeInt(counter);
  35.  *     out.writeLong(timestamp);
  36.  *   }
  37.  *       
  38.  *   //Writable#readFields() implementation
  39.  *   public void readFields(DataInput in) throws IOException {
  40.  *     counter = in.readInt();
  41.  *     timestamp = in.readLong();
  42.  *   }
  43.  *       
  44.  *   public void write(PreparedStatement statement) throws SQLException {
  45.  *     statement.setInt(1, counter);
  46.  *     statement.setLong(2, timestamp);
  47.  *   }
  48.  *       
  49.  *   public void readFields(ResultSet resultSet) throws SQLException {
  50.  *     counter = resultSet.getInt(1);
  51.  *     timestamp = resultSet.getLong(2);
  52.  *   } 
  53.  * }
  54.  * </pre></p>
  55.  */
  56. public interface DBWritable {
  57.   /**
  58.    * Sets the fields of the object in the {@link PreparedStatement}.
  59.    * @param statement the statement that the fields are put into.
  60.    * @throws SQLException
  61.    */
  62. public void write(PreparedStatement statement) throws SQLException;
  63. /**
  64.  * Reads the fields of the object from the {@link ResultSet}. 
  65.  * @param resultSet the {@link ResultSet} to get the fields from.
  66.  * @throws SQLException
  67.  */
  68. public void readFields(ResultSet resultSet) throws SQLException ; 
  69. }