Package org.postgresql.largeobject

# Class LargeObjectManager

java.lang.Object
org.postgresql.largeobject.LargeObjectManager

public class LargeObjectManager extends Object
This class implements the large object interface to org.postgresql.

It provides methods that allow client code to create, open and delete large objects from the database. When opening an object, an instance of org.postgresql.largeobject.LargeObject is returned, and its methods then allow access to the object.

This class can only be created by `BaseConnection`

To get access to this class, use the following segment of code:

     import org.postgresql.largeobject.*;

     Connection  conn;
     LargeObjectManager lobj;

     ... code that opens a connection ...

     lobj = ((org.postgresql.PGConnection)myconn).getLargeObjectAPI();

Normally, client code would use the getAsciiStream, getBinaryStream, or getUnicodeStream methods in ResultSet, or setAsciiStream, setBinaryStream, or setUnicodeStream methods in PreparedStatement to access Large Objects.

However, sometimes lower level access to Large Objects are required, that are not supported by the JDBC specification.

Refer to org.postgresql.largeobject.LargeObject on how to manipulate the contents of a Large Object.

See Also:
  - `ResultSet.getAsciiStream(int)`
  - `ResultSet.getBinaryStream(int)`
  - `ResultSet.getUnicodeStream(int)`
  - `PreparedStatement.setAsciiStream(int, java.io.InputStream, int)`
  - `PreparedStatement.setBinaryStream(int, java.io.InputStream, int)`
  - `PreparedStatement.setUnicodeStream(int, java.io.InputStream, int)`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `READ`
  This mode indicates we want to read an object.
  `static final int`
  `READWRITE`
  This mode is the default.
  `static final int`
  `WRITE`
  This mode indicates we want to write to an object.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `LargeObjectManager(BaseConnection conn)`
  Constructs the LargeObject API.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `create()`
  Deprecated.
  As of 8.3, replaced by `createLO()`
  `int`
  `create(int mode)`
  Deprecated.
  As of 8.3, replaced by `createLO(int)`
  `long`
  `createLO()`
  This creates a large object, returning its OID.
  `long`
  `createLO(int mode)`
  This creates a large object, returning its OID.
  `void`
  `delete(int oid)`
  Deprecated.
  As of 8.3, replaced by `delete(long)`
  `void`
  `delete(long oid)`
  This deletes a large object.
  `LargeObject`
  `open(int oid)`
  Deprecated.
  As of 8.3, replaced by `open(long)`
  `LargeObject`
  `open(int oid, boolean commitOnClose)`
  This opens an existing large object, same as previous method, but commits the transaction on close if asked.
  `LargeObject`
  `open(int oid, int mode)`
  Deprecated.
  As of 8.3, replaced by `open(long, int)`
  `LargeObject`
  `open(int oid, int mode, boolean commitOnClose)`
  This opens an existing large object, same as previous method, but commits the transaction on close if asked.
  `LargeObject`
  `open(long oid)`
  This opens an existing large object, based on its OID.
  `LargeObject`
  `open(long oid, boolean commitOnClose)`
  This opens an existing large object, same as previous method, but commits the transaction on close if asked.
  `LargeObject`
  `open(long oid, int mode)`
  This opens an existing large object, based on its OID.
  `LargeObject`
  `open(long oid, int mode, boolean commitOnClose)`
  This opens an existing large object, based on its OID.
  `void`
  `unlink(int oid)`
  Deprecated.
  As of 8.3, replaced by `unlink(long)`
  `void`
  `unlink(long oid)`
  This deletes a large object.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### WRITE

    public static final int WRITE
    This mode indicates we want to write to an object.
    See Also:
      - Constant Field Values

  - ### READ

    public static final int READ
    This mode indicates we want to read an object.
    See Also:
      - Constant Field Values

  - ### READWRITE

    public static final int READWRITE
    This mode is the default. It indicates we want read and write access to a large object.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### LargeObjectManager

    public LargeObjectManager(BaseConnection conn) throws SQLException
    Constructs the LargeObject API.

    Important Notice
    This method should only be called by `BaseConnection`

    There should only be one LargeObjectManager per Connection. The `BaseConnection` class keeps track of the various extension API's and it's advised you use those to gain access, and not going direct.

    Parameters:
      `conn` - connection
    Throws:
      `SQLException` - if something wrong happens

- ## Method Details

  - ### open

    @Deprecated public LargeObject open(int oid) throws SQLException
    Deprecated.
    As of 8.3, replaced by `open(long)`
    This opens an existing large object, based on its OID. This method assumes that READ and WRITE access is required (the default).
    Parameters:
      `oid` - of large object
    Returns:
      LargeObject instance providing access to the object
    Throws:
      `SQLException` - on error

  - ### open

    public LargeObject open(int oid, boolean commitOnClose) throws SQLException
    This opens an existing large object, same as previous method, but commits the transaction on close if asked. This is useful when the LOB is returned to a caller which won't take care of transactions by itself.
    Parameters:
      `oid` - of large object
      `commitOnClose` - commit the transaction when this LOB will be closed
    Returns:
      LargeObject instance providing access to the object
    Throws:
      `SQLException` - on error

  - ### open

    public LargeObject open(long oid) throws SQLException
    This opens an existing large object, based on its OID. This method assumes that READ and WRITE access is required (the default).
    Parameters:
      `oid` - of large object
    Returns:
      LargeObject instance providing access to the object
    Throws:
      `SQLException` - on error

  - ### open

    public LargeObject open(long oid, boolean commitOnClose) throws SQLException
    This opens an existing large object, same as previous method, but commits the transaction on close if asked.
    Parameters:
      `oid` - of large object
      `commitOnClose` - commit the transaction when this LOB will be closed
    Returns:
      LargeObject instance providing access to the object
    Throws:
      `SQLException` - on error

  - ### open

    @Deprecated public LargeObject open(int oid, int mode) throws SQLException
    Deprecated.
    As of 8.3, replaced by `open(long, int)`
    This opens an existing large object, based on its OID.
    Parameters:
      `oid` - of large object
      `mode` - mode of open
    Returns:
      LargeObject instance providing access to the object
    Throws:
      `SQLException` - on error

  - ### open

    public LargeObject open(int oid, int mode, boolean commitOnClose) throws SQLException
    This opens an existing large object, same as previous method, but commits the transaction on close if asked.
    Parameters:
      `oid` - of large object
      `mode` - mode of open
      `commitOnClose` - commit the transaction when this LOB will be closed
    Returns:
      LargeObject instance providing access to the object
    Throws:
      `SQLException` - on error

  - ### open

    public LargeObject open(long oid, int mode) throws SQLException
    This opens an existing large object, based on its OID.
    Parameters:
      `oid` - of large object
      `mode` - mode of open
    Returns:
      LargeObject instance providing access to the object
    Throws:
      `SQLException` - on error

  - ### open

    public LargeObject open(long oid, int mode, boolean commitOnClose) throws SQLException
    This opens an existing large object, based on its OID.
    Parameters:
      `oid` - of large object
      `mode` - mode of open
      `commitOnClose` - commit the transaction when this LOB will be closed
    Returns:
      LargeObject instance providing access to the object
    Throws:
      `SQLException` - on error

  - ### create

    @Deprecated public int create() throws SQLException
    Deprecated.
    As of 8.3, replaced by `createLO()`
    This creates a large object, returning its OID.

    It defaults to READWRITE for the new object's attributes.

    Returns:
      oid of new object
    Throws:
      `SQLException` - on error

  - ### createLO

    public long createLO() throws SQLException
    This creates a large object, returning its OID.

    It defaults to READWRITE for the new object's attributes.

    Returns:
      oid of new object
    Throws:
      `SQLException` - if something wrong happens

  - ### createLO

    public long createLO(int mode) throws SQLException
    This creates a large object, returning its OID.
    Parameters:
      `mode` - a bitmask describing different attributes of the new object
    Returns:
      oid of new object
    Throws:
      `SQLException` - on error

  - ### create

    @Deprecated public int create(int mode) throws SQLException
    Deprecated.
    As of 8.3, replaced by `createLO(int)`
    This creates a large object, returning its OID.
    Parameters:
      `mode` - a bitmask describing different attributes of the new object
    Returns:
      oid of new object
    Throws:
      `SQLException` - on error

  - ### delete

    public void delete(long oid) throws SQLException
    This deletes a large object.
    Parameters:
      `oid` - describing object to delete
    Throws:
      `SQLException` - on error

  - ### unlink

    @Deprecated public void unlink(int oid) throws SQLException
    Deprecated.
    As of 8.3, replaced by `unlink(long)`
    This deletes a large object.

    It is identical to the delete method, and is supplied as the C API uses unlink.

    Parameters:
      `oid` - describing object to delete
    Throws:
      `SQLException` - on error

  - ### unlink

    public void unlink(long oid) throws SQLException
    This deletes a large object.

    It is identical to the delete method, and is supplied as the C API uses unlink.

    Parameters:
      `oid` - describing object to delete
    Throws:
      `SQLException` - on error

  - ### delete

    @Deprecated public void delete(int oid) throws SQLException
    Deprecated.
    As of 8.3, replaced by `delete(long)`
    This deletes a large object.
    Parameters:
      `oid` - describing object to delete
    Throws:
      `SQLException` - on error