| /* |
| * Copyright (c) 1998, 2021 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 v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0, |
| * or the Eclipse Distribution License v. 1.0 which is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause |
| */ |
| |
| // Contributors: |
| // Oracle - initial API and implementation from Oracle TopLink |
| package org.eclipse.persistence.jpa; |
| |
| import java.util.List; |
| |
| import org.eclipse.persistence.queries.AttributeGroup; |
| import org.eclipse.persistence.queries.Call; |
| import org.eclipse.persistence.queries.DatabaseQuery; |
| import org.eclipse.persistence.sessions.*; |
| import org.eclipse.persistence.expressions.Expression; |
| import org.eclipse.persistence.internal.sessions.AbstractSession; |
| import org.eclipse.persistence.internal.sessions.DatabaseSessionImpl; |
| import org.eclipse.persistence.sessions.broker.SessionBroker; |
| import org.eclipse.persistence.sessions.server.ServerSession; |
| |
| /** |
| * <p> |
| * <b>Purpose</b>: Defines the Interface for EclipseLink extensions to the EntityManager |
| * </p> |
| * @see jakarta.persistence.EntityManager |
| */ |
| /* |
| * @author Gordon Yorke |
| */ |
| |
| public interface JpaEntityManager extends jakarta.persistence.EntityManager, AutoCloseable { |
| |
| /** |
| * This method returns the current session to the requester. The current session |
| * will be the active UnitOfWork within a transaction and will be a 'scrap' |
| * UnitOfWork outside of a transaction. The caller is concerned about the results |
| * then the getSession() or getUnitOfWork() API should be called. |
| */ |
| Session getActiveSession(); |
| |
| /** |
| * Return the underlying database session |
| */ |
| AbstractSession getAbstractSession(); |
| |
| /** |
| * Return the underlying database session |
| */ |
| DatabaseSessionImpl getDatabaseSession(); |
| |
| /** |
| * Return the underlying server session |
| */ |
| ServerSession getServerSession(); |
| |
| /** |
| * Return the underlying session broker |
| */ |
| SessionBroker getSessionBroker(); |
| |
| /** |
| * Return the member DatabaseSessionImpl that maps cls in session broker. |
| * Return null if either not a session broker or cls is not mapped. |
| * Session broker implement composite persistence unit. |
| */ |
| AbstractSession getMemberDatabaseSession(Class cls); |
| |
| /** |
| * Return the member ServerSession that maps cls in session broker. |
| * Return null if either not a session broker or cls is not mapped. |
| * Session broker implement composite persistence unit. |
| */ |
| ServerSession getMemberServerSession(Class cls); |
| |
| /** |
| * Return the name of member session that maps cls. |
| * Return null if either not a session broker or cls is not mapped. |
| * Session broker implement composite persistence unit. |
| */ |
| String getMemberSessionName(Class cls); |
| |
| /** |
| * Indicates whether the underlying session is a session broker. |
| * Session broker implement composite persistence unit. |
| */ |
| boolean isBroker(); |
| |
| /** |
| * This method will return the transactional UnitOfWork during the transaction and null |
| * outside of the transaction. |
| */ |
| UnitOfWork getUnitOfWork(); |
| |
| /** |
| * This method will return a Session outside of a transaction and null within a transaction. |
| */ |
| Session getSession(); |
| |
| /** |
| * This method is used to create a query using a EclipseLink Expression for the entity class. |
| */ |
| jakarta.persistence.Query createQuery(Expression expression, Class entityClass); |
| |
| /** |
| * This method is used to create a query using a EclipseLink DatabaseQuery. |
| */ |
| jakarta.persistence.Query createQuery(DatabaseQuery query); |
| |
| /** |
| * This method is used to create a query using a EclipseLink Call. |
| */ |
| jakarta.persistence.Query createQuery(Call call); |
| |
| /** |
| * This method is used to create a query using a EclipseLink Call for the entity class. |
| */ |
| jakarta.persistence.Query createQuery(Call call, Class entityClass); |
| |
| /** |
| * This method is used to create a query using query by example. |
| */ |
| jakarta.persistence.Query createQueryByExample(Object exampleObject); |
| |
| /** |
| * This method will create a query object that wraps a EclipseLink Named Query. |
| */ |
| jakarta.persistence.Query createDescriptorNamedQuery(String queryName, Class descriptorClass); |
| |
| /** |
| * This method will create a query object that wraps a EclipseLink Named Query. |
| */ |
| jakarta.persistence.Query createDescriptorNamedQuery(String queryName, Class descriptorClass, List argumentTypes); |
| |
| /** |
| * This method will load the passed entity or collection of entities using the passed AttributeGroup. |
| * In case of collection all members should be either entities of the same type |
| * or have a common inheritance hierarchy mapped root class. |
| * The AttributeGroup should correspond to the entity type. |
| */ |
| void load(Object entityOrEntities, AttributeGroup group); |
| |
| /** |
| * This method will return copy the passed entity using the passed AttributeGroup. |
| * In case of collection all members should be either entities of the same type |
| * or have a common inheritance hierarchy mapped root class. |
| * The AttributeGroup should correspond to the entity type. |
| */ |
| Object copy(Object entityOrEntities, AttributeGroup group); |
| } |