org.hibernate.bytecode.enhance.spi.interceptor.LazyAttributeDescriptor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hibernate-core Show documentation
Show all versions of hibernate-core Show documentation
Hibernate's core ORM functionality
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.bytecode.enhance.spi.interceptor;
import org.hibernate.mapping.Property;
import org.hibernate.type.Type;
/**
* Descriptor for an attribute which is enabled for bytecode lazy fetching
*
* @author Steve Ebersole
*/
public class LazyAttributeDescriptor {
public static LazyAttributeDescriptor from(
Property property,
int attributeIndex,
int lazyIndex) {
String fetchGroupName = property.getLazyGroup();
if ( fetchGroupName == null ) {
fetchGroupName = property.getType().isCollectionType()
? property.getName()
: "DEFAULT";
}
return new LazyAttributeDescriptor(
attributeIndex,
lazyIndex,
property.getName(),
property.getType(),
fetchGroupName
);
}
private final int attributeIndex;
private final int lazyIndex;
private final String name;
private final Type type;
private final String fetchGroupName;
private LazyAttributeDescriptor(
int attributeIndex,
int lazyIndex,
String name,
Type type,
String fetchGroupName) {
assert attributeIndex >= lazyIndex;
this.attributeIndex = attributeIndex;
this.lazyIndex = lazyIndex;
this.name = name;
this.type = type;
this.fetchGroupName = fetchGroupName;
}
/**
* Access to the index of the attribute in terms of its position in the entity persister
*
* @return The persister attribute index
*/
public int getAttributeIndex() {
return attributeIndex;
}
/**
* Access to the index of the attribute in terms of its position withing the lazy attributes of the persister
*
* @return The persister lazy attribute index
*/
public int getLazyIndex() {
return lazyIndex;
}
/**
* Access to the name of the attribute
*
* @return The attribute name
*/
public String getName() {
return name;
}
/**
* Access to the attribute's type
*
* @return The attribute type
*/
public Type getType() {
return type;
}
/**
* Access to the name of the fetch group to which the attribute belongs
*
* @return The name of the fetch group the attribute belongs to
*/
public String getFetchGroupName() {
return fetchGroupName;
}
}