List of usage examples for org.hibernate.internal SessionFactoryImpl getAllClassMetadata
@Override public Map<String, ClassMetadata> getAllClassMetadata() throws HibernateException
From source file:org.babyfish.hibernate.cfg.Configuration.java
License:Open Source License
@Override public XSessionFactory buildSessionFactory(ServiceRegistry serviceRegistry) throws HibernateException { Arguments.mustBeInstanceOfValue("serviceRegistry", Arguments.mustNotBeNull("serviceRegistry", serviceRegistry), StandardServiceRegistryImpl.class); replacePersisterClassResolver((AbstractServiceRegistryImpl) serviceRegistry); String originalCurrentSessionContext = this.getProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS); this.setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread"); SessionFactoryImpl factory; try {//w ww. java 2 s . c o m pathPlanKeyVlidationSuspended = true; try { factory = (SessionFactoryImpl) super.buildSessionFactory(serviceRegistry); } finally { pathPlanKeyVlidationSuspended = false; } } finally { if (originalCurrentSessionContext != null) { this.setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, originalCurrentSessionContext); } else { this.getProperties().remove(Environment.CURRENT_SESSION_CONTEXT_CLASS); } } if (originalCurrentSessionContext != null) { factory.getProperties().setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, originalCurrentSessionContext); } else { factory.getProperties().remove(Environment.CURRENT_SESSION_CONTEXT_CLASS); } Dialect dialect = factory.getDialect(); if (dialect instanceof InstallableDialect) { ((InstallableDialect) dialect).install(factory); } EventListenerGroup<MergeEventListener> mergeEventListenerGroup = factory.getServiceRegistry() .getService(EventListenerRegistry.class).getEventListenerGroup(EventType.MERGE); MergeEventListener mergeEventListener = new ObjectModelMergeEventListener( mergeEventListenerGroup.listeners()); mergeEventListenerGroup.clear(); mergeEventListenerGroup.appendListener(mergeEventListener); setQueryPlanceCache(factory, this.createQueryPlanCache(factory)); for (ClassMetadata classMetadata : factory.getAllClassMetadata().values()) { if (Metadatas.getObjectModelFactoryProvider(classMetadata.getMappedClass()) != null) { //Validate whether JPA configuration is same with object model configuration HibernateMetadatas.of(classMetadata.getMappedClass()).getPersistentClass(factory); } } return SessionFactoryImplWrapper.wrap(factory); }
From source file:org.babyfish.hibernate.internal.SessionFactoryImplWrapper.java
License:Open Source License
static NavigableMap<Class<?>, Collection<HbmReference>> createHbmReferencesByTargetClass( SessionFactoryImpl sessionFactoryImpl) { NavigableMap<Class<?>, Collection<HbmReference>> hbmReferencesByTargetClass = new TreeMap<Class<?>, Collection<HbmReference>>( new Comparator<Class<?>>() { @Override/*from ww w . j a v a2s . co m*/ public int compare(Class<?> o1, Class<?> o2) { if (o1 == o2) { return 0; } if (o1.isAssignableFrom(o2)) { return -1; } if (o2.isAssignableFrom(o1)) { return +1; } //TODO: big bug return o1.hashCode() - o2.hashCode(); } }); Map<String, ClassMetadata> classClassMetadatas = sessionFactoryImpl.getAllClassMetadata(); for (ClassMetadata classMetadata : classClassMetadatas.values()) { Type[] propertyTypes = classMetadata.getPropertyTypes(); for (int i = propertyTypes.length - 1; i >= 0; i--) { Type propertyType = propertyTypes[i]; if (propertyType instanceof EntityType) { Class<?> targetClass = propertyType.getReturnedClass(); Collection<HbmReference> hbmReferences = hbmReferencesByTargetClass.get(targetClass); if (hbmReferences == null) { hbmReferences = new ArrayList<HbmReference>(); hbmReferencesByTargetClass.put(targetClass, hbmReferences); } hbmReferences.add(new HbmReference(classMetadata, i)); } } } for (Entry<?, Collection<HbmReference>> entry : hbmReferencesByTargetClass.entrySet()) { entry.setValue(MACollections.unmodifiable(entry.getValue())); } return MACollections.unmodifiable(hbmReferencesByTargetClass); }