All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hibernate.metamodel.source.binder.EntitySource Maven / Gradle / Ivy

There is a newer version: 7.0.0.Alpha1
Show newest version
/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * Copyright (c) 2011, Red Hat Inc. or third-party contributors as
 * indicated by the @author tags or express copyright attribution
 * statements applied by the authors.  All third-party contributions are
 * distributed under license by Red Hat Inc.
 *
 * This copyrighted material is made available to anyone wishing to use, modify,
 * copy, or redistribute it subject to the terms and conditions of the GNU
 * Lesser General Public License, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
 * for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this distribution; if not, write to:
 * Free Software Foundation, Inc.
 * 51 Franklin Street, Fifth Floor
 * Boston, MA  02110-1301  USA
 */
package org.hibernate.metamodel.source.binder;

import java.util.List;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;

import org.hibernate.internal.jaxb.Origin;
import org.hibernate.metamodel.binding.CustomSQL;
import org.hibernate.metamodel.source.LocalBindingContext;

/**
 * Contract describing source of an entity
 *
 * @author Steve Ebersole
 */
public interface EntitySource extends SubclassEntityContainer, AttributeSourceContainer {

	/**
	 * Obtain the origin of this source.
	 *
	 * @return The origin of this source.
	 */
	public Origin getOrigin();

	/**
	 * Obtain the binding context local to this entity source.
	 *
	 * @return The local binding context
	 */
	public LocalBindingContext getLocalBindingContext();

	/**
	 * Obtain the entity name
	 *
	 * @return The entity name
	 */
	public String getEntityName();

	/**
	 * Obtain the name of the entity {@link Class}
	 *
	 * @return THe entity class name
	 */
	public String getClassName();

	/**
	 * Obtain the JPA name of the entity
	 *
	 * @return THe JPA-specific entity name
	 */
	public String getJpaEntityName();

	/**
	 * Obtain the primary table for this entity.
	 *
	 * @return The primary table.
	 */
	public TableSource getPrimaryTable();

	/**
	 * Obtain the secondary tables for this entity
	 *
	 * @return returns an iterator over the secondary tables for this entity
	 */
	public Iterable getSecondaryTables();

	/**
	 * Obtain the name of a custom tuplizer class to be used.
	 *
	 * @return The custom tuplizer class name
	 */
	public String getCustomTuplizerClassName();

	/**
	 * Obtain the name of a custom persister class to be used.
	 *
	 * @return The custom persister class name
	 */
	public String getCustomPersisterClassName();

	/**
	 * Is this entity lazy (proxyable)?
	 *
	 * @return {@code true} indicates the entity is lazy; {@code false} non-lazy.
	 */
	public boolean isLazy();

	/**
	 * For {@link #isLazy() lazy} entities, obtain the interface to use in constructing its proxies.
	 *
	 * @return The proxy interface name
	 */
	public String getProxy();

	/**
	 * Obtain the batch-size to be applied when initializing proxies of this entity.
	 *
	 * @return returns the the batch-size.
	 */
	public int getBatchSize();

	/**
	 * Is the entity abstract?
	 * 

* The implication is whether the entity maps to a database table. * * @return {@code true} indicates the entity is abstract; {@code false} non-abstract. */ public boolean isAbstract(); /** * Did the source specify dynamic inserts? * * @return {@code true} indicates dynamic inserts will be used; {@code false} otherwise. */ public boolean isDynamicInsert(); /** * Did the source specify dynamic updates? * * @return {@code true} indicates dynamic updates will be used; {@code false} otherwise. */ public boolean isDynamicUpdate(); /** * Did the source specify to perform selects to decide whether to perform (detached) updates? * * @return {@code true} indicates selects will be done; {@code false} otherwise. */ public boolean isSelectBeforeUpdate(); /** * Obtain the name of a named-query that will be used for loading this entity * * @return THe custom loader query name */ public String getCustomLoaderName(); /** * Obtain the custom SQL to be used for inserts for this entity * * @return The custom insert SQL */ public CustomSQL getCustomSqlInsert(); /** * Obtain the custom SQL to be used for updates for this entity * * @return The custom update SQL */ public CustomSQL getCustomSqlUpdate(); /** * Obtain the custom SQL to be used for deletes for this entity * * @return The custom delete SQL */ public CustomSQL getCustomSqlDelete(); /** * Obtain any additional table names on which to synchronize (auto flushing) this entity. * * @return Additional synchronized table names. */ public List getSynchronizedTableNames(); /** * Obtain the meta-attribute sources associated with this entity. * * @return The meta-attribute sources. */ public Iterable metaAttributes(); /** * Get the actual discriminator value in case of a single table inheritance * * @return the actual discriminator value in case of a single table inheritance or {@code null} in case there is no * explicit value or a different inheritance scheme */ public String getDiscriminatorMatchValue(); /** * @return returns the source information for constraints defined on the table */ public Iterable getConstraints(); /** * @return the list of classes (this {@link Entity entity}/{@link MappedSuperclass mapped superclass}, or * {@link EntityListeners entity listeners}) that define JPA callbacks for this entity/mapped superclass. */ List getJpaCallbackClasses(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy