下面列出了怎么用org.hibernate.boot.internal.MetadataBuildingContextRootImpl的API类实例代码及写法,或者点击链接到github查看源代码。
public static ArtifactCollector generateHibernateModel(MetadataFactory source,
StandardServiceRegistry serviceRegistry) {
ReverseEngineeringStrategy strategy = new DefaultReverseEngineeringStrategy();
MetadataBuildingOptions options = new MetadataBuildingOptionsImpl(serviceRegistry);
BootstrapContext bootstrapContext = new BootstrapContextImpl(serviceRegistry, options);
InFlightMetadataCollectorImpl metadataCollector = new InFlightMetadataCollectorImpl(bootstrapContext, options);
MetadataBuildingContext buildingContext = new MetadataBuildingContextRootImpl(bootstrapContext, options,
metadataCollector);
TeiidJDBCBinder binder = new TeiidJDBCBinder(serviceRegistry, new Properties(), buildingContext, strategy,
false, metadataCollector, source);
Metadata metadata = metadataCollector.buildMetadataInstance(buildingContext);
binder.readFromDatabase(null, null, buildMapping(metadata));
HibernateMappingExporter exporter = new HibernateMappingExporter() {
@Override
public Metadata getMetadata() {
return metadata;
}
};
exporter.setOutputDirectory(TMP_DIR);
exporter.start();
return exporter.getArtifactCollector();
}
@Override
public void contribute(InFlightMetadataCollector metadataCollector, IndexView jandexIndex) {
MetadataBuildingOptions options = metadataCollector.getMetadataBuildingOptions();
ClassLoaderService classLoaderService = options.getServiceRegistry().getService(ClassLoaderService.class);
this.metadataBuildingContext = new MetadataBuildingContextRootImpl(
metadataCollector.getBootstrapContext(),
options,
metadataCollector
);
java.util.Collection<PersistentEntity> persistentEntities = hibernateMappingContext.getPersistentEntities();
for (PersistentEntity persistentEntity : persistentEntities) {
if(!persistentEntity.getJavaClass().isAnnotationPresent(Entity.class)) {
if(ConnectionSourcesSupport.usesConnectionSource(persistentEntity, dataSourceName) && persistentEntity.isRoot()) {
bindRoot((HibernatePersistentEntity) persistentEntity, metadataCollector, sessionFactoryName);
}
}
}
}
public static Metadata generateHbmModel(ConnectionProvider provider, Dialect dialect) throws SQLException {
MetadataSources metadataSources = new MetadataSources();
ServiceRegistry registry = metadataSources.getServiceRegistry();
StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder(
(BootstrapServiceRegistry) registry).applySetting(AvailableSettings.DIALECT, TeiidDialect.class)
.addService(ConnectionProvider.class, provider).addService(JdbcEnvironment.class,
new JdbcEnvironmentImpl(provider.getConnection().getMetaData(), dialect))
.build();
MetadataBuildingOptions options = new MetadataBuildingOptionsImpl(serviceRegistry);
BootstrapContext bootstrapContext = new BootstrapContextImpl( serviceRegistry, options );
ReverseEngineeringStrategy strategy = new DefaultReverseEngineeringStrategy();
InFlightMetadataCollectorImpl metadataCollector = new InFlightMetadataCollectorImpl(bootstrapContext, options);
MetadataBuildingContext buildingContext = new MetadataBuildingContextRootImpl(bootstrapContext, options,
metadataCollector);
JDBCBinder binder = new JDBCBinder(serviceRegistry, new Properties(), buildingContext, strategy, false);
Metadata metadata = metadataCollector.buildMetadataInstance(buildingContext);
binder.readFromDatabase(null, null, buildMapping(metadata));
HibernateMappingExporter exporter = new HibernateMappingExporter() {
@Override
public Metadata getMetadata() {
return metadata;
}
};
exporter.start();
return metadata;
}
public AttributeConverterManager(MetadataBuildingContextRootImpl rootMetadataBuildingContext) {
this.rootMetadataBuildingContext = rootMetadataBuildingContext;
}