blob: 729eecf8ee9557e89f416b187ad566f464d74212 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.openjpa.persistence.jdbc;
import java.util.Collection;
import javax.persistence.LockModeType;
import org.apache.openjpa.jdbc.kernel.EagerFetchModes;
import org.apache.openjpa.jdbc.kernel.LRSSizes;
import org.apache.openjpa.jdbc.sql.JoinSyntaxes;
import org.apache.openjpa.persistence.FetchPlan;
/**
* JDBC extensions to the fetch plan.
*
* @since 0.4.1
* @author Abe White
* @author Pinaki Poddar
* @published
*/
public interface JDBCFetchPlan
extends FetchPlan {
/**
* Eager fetch mode in loading relations.
*/
FetchMode getEagerFetchMode();
/**
* Eager fetch mode in loading relations.
*/
JDBCFetchPlan setEagerFetchMode(FetchMode mode);
/**
* Eager fetch mode in loading subclasses.
*/
FetchMode getSubclassFetchMode();
/**
* Eager fetch mode in loading subclasses.
*/
JDBCFetchPlan setSubclassFetchMode(FetchMode mode);
/**
* Type of JDBC result set to use for query results.
*/
ResultSetType getResultSetType();
/**
* Type of JDBC result set to use for query results.
*/
JDBCFetchPlan setResultSetType(ResultSetType type);
/**
* Result set fetch direction.
*/
FetchDirection getFetchDirection();
/**
* Result set fetch direction.
*/
JDBCFetchPlan setFetchDirection(FetchDirection direction);
/**
* How to determine the size of a large result set.
*/
LRSSizeAlgorithm getLRSSizeAlgorithm();
/**
* How to determine the size of a large result set.
*/
JDBCFetchPlan setLRSSizeAlgorithm(LRSSizeAlgorithm lrsSizeAlgorithm);
/**
* SQL join syntax.
*/
JoinSyntax getJoinSyntax();
/**
* SQL join syntax.
*/
JDBCFetchPlan setJoinSyntax(JoinSyntax syntax);
/**
* The isolation level for queries issued to the database. This overrides
* the persistence-unit-wide <code>openjpa.jdbc.TransactionIsolation</code>
* value.
*
* @since 0.9.7
*/
IsolationLevel getIsolation();
/**
* The isolation level for queries issued to the database. This overrides
* the persistence-unit-wide <code>openjpa.jdbc.TransactionIsolation</code>
* value.
*
* @since 0.9.7
*/
JDBCFetchPlan setIsolation(IsolationLevel level);
// covariant type support for return vals
@Override JDBCFetchPlan addFetchGroup(String group);
@Override JDBCFetchPlan addFetchGroups(Collection groups);
@Override JDBCFetchPlan addFetchGroups(String... groups);
@Override JDBCFetchPlan addField(Class cls, String field);
@Override JDBCFetchPlan addField(String field);
@Override JDBCFetchPlan addFields(Class cls, Collection fields);
@Override JDBCFetchPlan addFields(Class cls, String... fields);
@Override JDBCFetchPlan addFields(Collection fields);
@Override JDBCFetchPlan addFields(String... fields);
@Override JDBCFetchPlan clearFetchGroups();
@Override JDBCFetchPlan clearFields();
@Override JDBCFetchPlan removeFetchGroup(String group);
@Override JDBCFetchPlan removeFetchGroups(Collection groups);
@Override JDBCFetchPlan removeFetchGroups(String... groups);
@Override JDBCFetchPlan removeField(Class cls, String field);
@Override JDBCFetchPlan removeField(String field);
@Override JDBCFetchPlan removeFields(Class cls, Collection fields);
@Override JDBCFetchPlan removeFields(Class cls, String... fields);
@Override JDBCFetchPlan removeFields(String... fields);
@Override JDBCFetchPlan removeFields(Collection fields);
@Override JDBCFetchPlan resetFetchGroups();
@Override JDBCFetchPlan setQueryResultCacheEnabled(boolean cache);
@Override JDBCFetchPlan setFetchBatchSize(int fetchBatchSize);
@Override JDBCFetchPlan setLockTimeout(int timeout);
@Override JDBCFetchPlan setMaxFetchDepth(int depth);
@Override JDBCFetchPlan setReadLockMode(LockModeType mode);
@Override JDBCFetchPlan setWriteLockMode(LockModeType mode);
@Override JDBCFetchPlan setQueryTimeout(int timeout);
/**
* @deprecated use the {@link FetchMode} enum instead.
*/
@Deprecated int EAGER_NONE = EagerFetchModes.EAGER_NONE;
/**
* @deprecated use the {@link FetchMode} enum instead.
*/
@Deprecated int EAGER_JOIN = EagerFetchModes.EAGER_JOIN;
/**
* @deprecated use the {@link FetchMode} enum instead.
*/
@Deprecated int EAGER_PARALLEL = EagerFetchModes.EAGER_PARALLEL;
/**
* @deprecated use the {@link LRSSizeAlgorithm} enum instead.
*/
@Deprecated int SIZE_UNKNOWN = LRSSizes.SIZE_UNKNOWN;
/**
* @deprecated use the {@link LRSSizeAlgorithm} enum instead.
*/
@Deprecated int SIZE_LAST = LRSSizes.SIZE_LAST;
/**
* @deprecated use the {@link LRSSizeAlgorithm} enum instead.
*/
@Deprecated int SIZE_QUERY = LRSSizes.SIZE_QUERY;
/**
* @deprecated use the {@link JoinSyntax} enum instead.
*/
@Deprecated int SYNTAX_SQL92 = JoinSyntaxes.SYNTAX_SQL92;
/**
* @deprecated use the {@link JoinSyntax} enum instead.
*/
@Deprecated int SYNTAX_TRADITIONAL =
JoinSyntaxes.SYNTAX_TRADITIONAL;
/**
* @deprecated use the {@link JoinSyntax} enum instead.
*/
@Deprecated int SYNTAX_DATABASE = JoinSyntaxes.SYNTAX_DATABASE;
/**
* @deprecated use {@link #setEagerFetchMode(FetchMode)} instead.
*/
@Deprecated JDBCFetchPlan setEagerFetchMode(int mode);
/**
* @deprecated use {@link #setSubclassFetchMode(FetchMode)} instead.
*/
@Deprecated JDBCFetchPlan setSubclassFetchMode(int mode);
/**
* @deprecated use {@link #setResultSetType(ResultSetType)} instead.
*/
@Deprecated JDBCFetchPlan setResultSetType(int mode);
/**
* @deprecated use {@link #setFetchDirection(FetchDirection)} instead.
*/
@Deprecated JDBCFetchPlan setFetchDirection(int direction);
/**
* @deprecated use {@link #getLRSSizeAlgorithm()} instead.
*/
@Deprecated int getLRSSize();
/**
* @deprecated use {@link #setLRSSizeAlgorithm(LRSSizeAlgorithm)} instead.
*/
@Deprecated JDBCFetchPlan setLRSSize(int lrsSizeMode);
/**
* @deprecated use {@link #setJoinSyntax(JoinSyntax)} instead.
*/
@Deprecated JDBCFetchPlan setJoinSyntax(int syntax);
/**
* Affirms if foreign key for a relation field will be pre-fetched as part of the owning object irrespective of
* whether the field is included in the default fetch group of this fetch configuration. <br><br>
* By default, foreign key for a relation field is pre-fetched as part of the owning object <em>only</em> if the
* field in included in the default fetch group of this fetch configuration.
*
* @since 2.2.0
*/
boolean getIgnoreDfgForFkSelect();
/**
* Affirms if foreign key for a relation field will be pre-fetched as part of the owning object irrespective of
* whether the field is included in the default fetch group of this fetch configuration. <br><br>
* By default, foreign key for a relation field is pre-fetched as part of the owning object <em>only</em> if the
* field in included in the default fetch group of this fetch configuration.
*
* @since 2.2.0
*/
void setIgnoreDfgForFkSelect(boolean b);
}