# Class ByteArrayType

java.lang.Object
org.apache.cayenne.access.types.ByteArrayType

All Implemented Interfaces:
  `ExtendedType<byte[]>`

Direct Known Subclasses:
  `OracleByteArrayType`

public class ByteArrayType extends Object implements ExtendedType<byte[]>
Handles `byte[]`, mapping it as either of JDBC types - BLOB or (VAR)BINARY. Can be configured to trim trailing zero bytes.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected boolean`
  `trimmingBytes`
  `protected boolean`
  `usingBlobs`

  ### Fields inherited from interface ExtendedType

  `TRIM_VALUES_THRESHOLD`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ByteArrayType(boolean trimmingBytes, boolean usingBlobs)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `getClassName()`
  Returns a full name of Java class that this ExtendedType supports.
  `boolean`
  `isTrimmingBytes()`
  `boolean`
  `isUsingBlobs()`
  Returns `true` if byte columns are handled as BLOBs internally.
  `static void`
  `logBytes(StringBuilder buffer, byte[] bytes)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  in favor of `ArrayUtil.appendTruncated(StringBuilder, byte[])`
  `byte[]`
  `materializeObject(CallableStatement cs, int index, int type)`
  Reads an object from a stored procedure OUT parameter, converting it to class returned by 'getClassName' method.
  `byte[]`
  `materializeObject(ResultSet rs, int index, int type)`
  Reads an object from JDBC ResultSet column, converting it to class returned by 'getClassName' method.
  `protected byte[]`
  `readBinaryStream(ResultSet rs, int index)`
  `protected byte[]`
  `readBlob(Blob blob)`
  `protected byte[]`
  `readValueStream(InputStream in, int streamSize, int bufSize)`
  `void`
  `setJdbcObject(PreparedStatement st, byte[] val, int pos, int type, int scale)`
  Initializes a single parameter of a PreparedStatement with object value.
  `void`
  `setTrimmingBytes(boolean trimingBytes)`
  `void`
  `setUsingBlobs(boolean usingBlobs)`
  `String`
  `toString(byte[] value)`
  Converts value of the supported type to a human-readable String representation.
  `static byte[]`
  `trimBytes(byte[] bytes)`
  Strips null bytes from the byte array, returning a potentially smaller array that contains no trailing zero bytes.
  `protected Blob`
  `writeBlob(byte[] bytes)`

  ### Methods inherited from class Object

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

- ## Field Details

  - ### trimmingBytes

    protected boolean trimmingBytes

  - ### usingBlobs

    protected boolean usingBlobs

- ## Constructor Details

  - ### ByteArrayType

    public ByteArrayType(boolean trimmingBytes, boolean usingBlobs)

- ## Method Details

  - ### logBytes

    @Deprecated(since="5.0", forRemoval=true) public static void logBytes(StringBuilder buffer, byte[] bytes)
    Deprecated, for removal: This API element is subject to removal in a future version.
    in favor of `ArrayUtil.appendTruncated(StringBuilder, byte[])`

  - ### trimBytes

    public static byte[] trimBytes(byte[] bytes)
    Strips null bytes from the byte array, returning a potentially smaller array that contains no trailing zero bytes.

  - ### getClassName

    public String getClassName()
    Description copied from interface: `ExtendedType`
    Returns a full name of Java class that this ExtendedType supports.
    Specified by:
      `getClassName` in interface `ExtendedType<byte[]>`

  - ### materializeObject

    public byte[] materializeObject(ResultSet rs, int index, int type) throws Exception
    Description copied from interface: `ExtendedType`
    Reads an object from JDBC ResultSet column, converting it to class returned by 'getClassName' method.
    Specified by:
      `materializeObject` in interface `ExtendedType<byte[]>`
    Throws:
      `Exception` - if read error occurred, or an object can't be converted to a target Java class.

  - ### materializeObject

    public byte[] materializeObject(CallableStatement cs, int index, int type) throws Exception
    Description copied from interface: `ExtendedType`
    Reads an object from a stored procedure OUT parameter, converting it to class returned by 'getClassName' method.
    Specified by:
      `materializeObject` in interface `ExtendedType<byte[]>`
    Throws:
      `Exception` - if read error occurred, or an object can't be converted to a target Java class.

  - ### setJdbcObject

    public void setJdbcObject(PreparedStatement st, byte[] val, int pos, int type, int scale) throws Exception
    Description copied from interface: `ExtendedType`
    Initializes a single parameter of a PreparedStatement with object value.
    Specified by:
      `setJdbcObject` in interface `ExtendedType<byte[]>`
    Throws:
      `Exception`

  - ### toString

    public String toString(byte[] value)
    Description copied from interface: `ExtendedType`
    Converts value of the supported type to a human-readable String representation.
    Specified by:
      `toString` in interface `ExtendedType<byte[]>`
    Parameters:
      `value` - a value to convert to String.

  - ### writeBlob

    protected Blob writeBlob(byte[] bytes)

  - ### readBlob

    protected byte[] readBlob(Blob blob) throws IOException, SQLException
    Throws:
      `IOException`
      `SQLException`

  - ### readBinaryStream

    protected byte[] readBinaryStream(ResultSet rs, int index) throws IOException, SQLException
    Throws:
      `IOException`
      `SQLException`

  - ### readValueStream

    protected byte[] readValueStream(InputStream in, int streamSize, int bufSize) throws IOException
    Throws:
      `IOException`

  - ### isUsingBlobs

    public boolean isUsingBlobs()
    Returns `true` if byte columns are handled as BLOBs internally.

  - ### setUsingBlobs

    public void setUsingBlobs(boolean usingBlobs)

  - ### isTrimmingBytes

    public boolean isTrimmingBytes()

  - ### setTrimmingBytes

    public void setTrimmingBytes(boolean trimingBytes)