org.eclipse.persistence.platform.database.converters.StructConverter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of eclipselink Show documentation
Show all versions of eclipselink Show documentation
EclipseLink build based upon Git transaction 180e602
/*******************************************************************************
* Copyright (c) 1998, 2014 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.platform.database.converters;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Struct;
/**
* PUBLIC:
* A StuctConverter can be added to a DatabasePlatform
* It allows custom processing dealing java.sql.Struct types
* When added to the DatabasePlatform:
* 1. convertToObject(Struct) will be invoked
* when a Struct named by the value returned by getStructName() is returned from the database. This
* conversion happens immediately after the object is returned from the database
* 2. convertToStruct(Object, Connection) will be invoked when an Object of the class
* returned by getJavaType() is written to the database. This conversion happens immediately before the
* object is written to the database
*
* Note: Many Structs can also be mapped with mappings StructureMapping and ObjectRelationalDataTypeDescriptor
* This class provides support for advanced types of Structures that require some processing immediately
* before writing to the database or immediately after reading from the database.
*
* @see org.eclipse.persistence.mappings.structures.StructureMapping
* @see org.eclipse.persistence.mappings.structures.ObjectRelationalDataTypeDescriptor
*/
public interface StructConverter {
/**
* PUBLIC:
* @return The value return by getSQLTypeName() called when called on the appropriate Struct
*/
public String getStructName();
/**
* PUBLIC:
* @return The Java Class to perform conversions on
*/
public Class getJavaType();
/**
* PUBLIC:
* This method will be invoked internally when reading a Struct from the database
* Implementers should put any custom conversion logic in this method
* @param struct the Struct that will be read
* @return The Object converted back from the Struct
* @throws SQLException
*/
public Object convertToObject(Struct struct) throws SQLException;
/**
* PUBLIC:
* This method will be invoked internally when writing an Object to the database
* Implementers should put any custom conversion logic in this method
* @param struct The Object to convert
* @param connection The JDBC connection
* @return The Object as a Struct
* @throws SQLException
*/
public Struct convertToStruct(Object struct,
Connection connection) throws SQLException;
}