javadoc about XML format mappings
This commit is contained in:
parent
9a11e843e6
commit
f5278ce678
|
@ -29,14 +29,9 @@ import org.hibernate.mapping.Table;
|
||||||
import org.hibernate.query.sqm.function.SqmFunctionDescriptor;
|
import org.hibernate.query.sqm.function.SqmFunctionDescriptor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the ORM model as determined from all provided mapping sources.
|
* Represents the ORM model as determined by aggregating the provided mapping sources.
|
||||||
* An instance may be obtained by calling {@link MetadataSources#buildMetadata()}.
|
* An instance may be obtained by calling {@link MetadataSources#buildMetadata()}.
|
||||||
*
|
*
|
||||||
* @apiNote For the time being this is essentially a copy of the legacy
|
|
||||||
* {@link Mapping} contract, split between reading the mapping information
|
|
||||||
* exposed here and collecting it via
|
|
||||||
* {@link org.hibernate.boot.spi.InFlightMetadataCollector}.
|
|
||||||
*
|
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*
|
*
|
||||||
* @since 5.0
|
* @since 5.0
|
||||||
|
|
|
@ -42,6 +42,9 @@ import org.w3c.dom.Document;
|
||||||
* Entry point for working with sources of O/R mapping metadata, either
|
* Entry point for working with sources of O/R mapping metadata, either
|
||||||
* in the form of annotated classes, or as XML mapping documents.
|
* in the form of annotated classes, or as XML mapping documents.
|
||||||
* <p>
|
* <p>
|
||||||
|
* Note that XML mappings may be expressed using the JPA {@code orm.xml}
|
||||||
|
* format, or in Hibernate's legacy {@code .hbm.xml} format.
|
||||||
|
* <p>
|
||||||
* An instance of {@code MetadataSources} may be obtained simply by
|
* An instance of {@code MetadataSources} may be obtained simply by
|
||||||
* instantiation, using {@link #MetadataSources() new MetadataSources()}.
|
* instantiation, using {@link #MetadataSources() new MetadataSources()}.
|
||||||
* The client must register sources and then call {@link #buildMetadata()},
|
* The client must register sources and then call {@link #buildMetadata()},
|
||||||
|
|
|
@ -12,7 +12,7 @@ import java.util.Objects;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Describes the origin of an xml document
|
* Describes the origin of an XML document.
|
||||||
*
|
*
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -27,7 +27,11 @@ import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper for building and handling {@link XmlSource} references
|
* Helper for building and handling {@link XmlSource} references.
|
||||||
|
* <p>
|
||||||
|
* An {@code XmlSource} represents an XML document containing
|
||||||
|
* O/R mapping metadata, either a JPA {@code orm.xml} file, or a
|
||||||
|
* Hibernate {@code .hbm.xml} file.
|
||||||
*
|
*
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*/
|
*/
|
||||||
|
@ -112,29 +116,28 @@ public class XmlSources {
|
||||||
return new JaxpSourceXmlSource( origin, new DOMSource( document ) );
|
return new JaxpSourceXmlSource( origin, new DOMSource( document ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read all {@code .hbm.xml} mappings from a jar file and pass them
|
||||||
|
* to the given {@link Consumer}.
|
||||||
|
* <p/>
|
||||||
|
* Assumes that any file named {@code *.hbm.xml} is a mapping document.
|
||||||
|
* This method does not support {@code orm.xml} files!
|
||||||
|
*
|
||||||
|
* @param jar a jar file
|
||||||
|
* @param consumer a consumer of the resulting {@linkplain XmlSource XML sources}
|
||||||
|
*/
|
||||||
public static void fromJar(File jar, Consumer<XmlSource> consumer) {
|
public static void fromJar(File jar, Consumer<XmlSource> consumer) {
|
||||||
JaxbLogger.JAXB_LOGGER.tracef( "Seeking mapping documents in jar file : %s", jar.getName() );
|
JaxbLogger.JAXB_LOGGER.tracef( "Seeking mapping documents in jar file : %s", jar.getName() );
|
||||||
|
|
||||||
final Origin origin = new Origin( SourceType.JAR, jar.getAbsolutePath() );
|
final Origin origin = new Origin( SourceType.JAR, jar.getAbsolutePath() );
|
||||||
|
|
||||||
try {
|
try ( JarFile jarFile = new JarFile(jar) ) {
|
||||||
final JarFile jarFile = new JarFile( jar );
|
final Enumeration<JarEntry> entries = jarFile.entries();
|
||||||
|
while ( entries.hasMoreElements() ) {
|
||||||
try {
|
final JarEntry jarEntry = entries.nextElement();
|
||||||
final Enumeration<JarEntry> entries = jarFile.entries();
|
if ( jarEntry.getName().endsWith(".hbm.xml") ) {
|
||||||
while ( entries.hasMoreElements() ) {
|
JaxbLogger.JAXB_LOGGER.tracef( "Found hbm.xml mapping in jar : %s", jarEntry.getName() );
|
||||||
final JarEntry jarEntry = entries.nextElement();
|
consumer.accept( new JarFileEntryXmlSource( origin, jarFile, jarEntry ) );
|
||||||
if ( jarEntry.getName().endsWith( ".hbm.xml" ) ) {
|
|
||||||
JaxbLogger.JAXB_LOGGER.tracef( "Found hbm.xml mapping in jar : %s", jarEntry.getName() );
|
|
||||||
consumer.accept( new JarFileEntryXmlSource( origin, jarFile, jarEntry ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
try {
|
|
||||||
jarFile.close();
|
|
||||||
}
|
|
||||||
catch ( Exception ignore ) {
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,12 @@ package org.hibernate.boot.jaxb.spi;
|
||||||
import org.hibernate.boot.jaxb.Origin;
|
import org.hibernate.boot.jaxb.Origin;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* An XML document containing O/R mapping metadata, either:
|
||||||
|
* <ul>
|
||||||
|
* <li>a JPA {@code orm.xml} file, or
|
||||||
|
* <li>a Hibernate {@code .hbm.xml} file.
|
||||||
|
* </ul>
|
||||||
|
*
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*/
|
*/
|
||||||
public abstract class XmlSource {
|
public abstract class XmlSource {
|
||||||
|
|
|
@ -26,10 +26,11 @@ import org.hibernate.service.ServiceRegistry;
|
||||||
/**
|
/**
|
||||||
* Builder for {@link BootstrapServiceRegistry} instances.
|
* Builder for {@link BootstrapServiceRegistry} instances.
|
||||||
* <p>
|
* <p>
|
||||||
* An instance of this class may be obtained by instantiations, simply by
|
* An instance of this class may be obtained simply by
|
||||||
* calling {@code new BootstrapServiceRegistryBuilder()}. Then a new
|
* {@linkplain #BootstrapServiceRegistryBuilder() instantiation}. Then a new
|
||||||
* {@code BootstrapServiceRegistry} may be obtained by calling {@link #build()}.
|
* {@code BootstrapServiceRegistry} may be obtained by calling {@link #build()}.
|
||||||
* It should be later destroyed by calling {@link #destroy(ServiceRegistry)}.
|
* It should be later destroyed by calling {@link #destroy(ServiceRegistry)}.
|
||||||
|
* Alternatively, {@linkplain #enableAutoClose() auto-close} may be enabled.
|
||||||
* <p>
|
* <p>
|
||||||
* Provides a registry of services needed for most operations.
|
* Provides a registry of services needed for most operations.
|
||||||
* Manages a {@link ClassLoaderService}, a set of {@link Integrator}s, and a
|
* Manages a {@link ClassLoaderService}, a set of {@link Integrator}s, and a
|
||||||
|
@ -51,6 +52,9 @@ public class BootstrapServiceRegistryBuilder {
|
||||||
|
|
||||||
private boolean autoCloseRegistry = true;
|
private boolean autoCloseRegistry = true;
|
||||||
|
|
||||||
|
public BootstrapServiceRegistryBuilder() {
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add an {@link Integrator} to be applied to the bootstrap registry.
|
* Add an {@link Integrator} to be applied to the bootstrap registry.
|
||||||
*
|
*
|
||||||
|
|
|
@ -65,7 +65,7 @@ import org.hibernate.usertype.UserType;
|
||||||
* under the covers.
|
* under the covers.
|
||||||
* <p>
|
* <p>
|
||||||
* An instance of {@code Configuration} may be obtained simply by
|
* An instance of {@code Configuration} may be obtained simply by
|
||||||
* instantiation, using {@link #Configuration() new Configuration()}.
|
* {@linkplain #Configuration() instantiation}.
|
||||||
* <p>
|
* <p>
|
||||||
* A {@code Configuration} may be used to aggregate:
|
* A {@code Configuration} may be used to aggregate:
|
||||||
* <ul>
|
* <ul>
|
||||||
|
@ -74,6 +74,9 @@ import org.hibernate.usertype.UserType;
|
||||||
* <li>entity O/R mappings, defined in either {@linkplain #addAnnotatedClass
|
* <li>entity O/R mappings, defined in either {@linkplain #addAnnotatedClass
|
||||||
* annotated classes}, or {@linkplain #addFile XML mapping documents}.
|
* annotated classes}, or {@linkplain #addFile XML mapping documents}.
|
||||||
* </ul>
|
* </ul>
|
||||||
|
* Note that XML mappings may be expressed using the JPA {@code orm.xml}
|
||||||
|
* format, or in Hibernate's legacy {@code .hbm.xml} format.
|
||||||
|
* <p>
|
||||||
* In addition, there are convenience methods for adding
|
* In addition, there are convenience methods for adding
|
||||||
* {@link #addAttributeConverter attribute converters},
|
* {@link #addAttributeConverter attribute converters},
|
||||||
* {@link #registerTypeContributor type contributors},
|
* {@link #registerTypeContributor type contributors},
|
||||||
|
@ -786,7 +789,7 @@ public class Configuration {
|
||||||
* property types as specified by its "entity attribute"
|
* property types as specified by its "entity attribute"
|
||||||
* parameterized type?
|
* parameterized type?
|
||||||
*/
|
*/
|
||||||
public void addAttributeConverter(Class<? extends AttributeConverter> attributeConverterClass, boolean autoApply) {
|
public void addAttributeConverter(Class<? extends AttributeConverter<?,?>> attributeConverterClass, boolean autoApply) {
|
||||||
addAttributeConverter( new ClassBasedConverterDescriptor( attributeConverterClass, autoApply, classmateContext ) );
|
addAttributeConverter( new ClassBasedConverterDescriptor( attributeConverterClass, autoApply, classmateContext ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,14 +16,9 @@ package org.hibernate.service;
|
||||||
* and
|
* and
|
||||||
* <li>{@linkplain org.hibernate.boot.registry.StandardServiceRegistry
|
* <li>{@linkplain org.hibernate.boot.registry.StandardServiceRegistry
|
||||||
* standard service registries}, which may be obtained from a
|
* standard service registries}, which may be obtained from a
|
||||||
* {@link org.hibernate.boot.registry.StandardServiceRegistryBuilder},
|
* {@link org.hibernate.boot.registry.StandardServiceRegistryBuilder}.
|
||||||
* </ul>
|
* </ul>
|
||||||
*
|
*
|
||||||
* @see org.hibernate.boot.registry.BootstrapServiceRegistry
|
|
||||||
* @see org.hibernate.boot.registry.StandardServiceRegistry
|
|
||||||
* @see org.hibernate.boot.registry.BootstrapServiceRegistryBuilder
|
|
||||||
* @see org.hibernate.boot.registry.StandardServiceRegistryBuilder
|
|
||||||
*
|
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*/
|
*/
|
||||||
public interface ServiceRegistry extends AutoCloseable {
|
public interface ServiceRegistry extends AutoCloseable {
|
||||||
|
|
Loading…
Reference in New Issue