Какая польза от спящего метода buildMappings - PullRequest
0 голосов
/ 13 декабря 2018

Как используется метод buildMappings в классе org.hibernate.cfg.Configuration?Метод возвращает void.

Что он делает?Я прошел через hibernate-core-3.6.9.Final.jar и код был таким, как показано ниже .. (Пожалуйста, обратитесь к разделу кода)

Фрагмент кода взят из hibernate-core-3.6.9.Final.jar:

 public void buildMappings()
  {
    secondPassCompile();
  }


  protected void secondPassCompile()
    throws MappingException
  {
    log.trace("Starting secondPassCompile() processing");
    if (!this.isDefaultProcessed)
    {
      Object isDelimited = this.reflectionManager.getDefaults().get("delimited-identifier");
      if ((isDelimited != null) && (isDelimited == Boolean.TRUE)) {
        getProperties().put("hibernate.globally_quoted_identifiers", "true");
      }
      AnnotationBinder.bindDefaults(createMappings());
      this.isDefaultProcessed = true;
    }
    this.metadataSourceQueue.syncAnnotatedClasses();
    this.metadataSourceQueue.processMetadata(determineMetadataSourcePrecedence());
    for (CacheHolder holder : this.caches) {
      if (holder.isClass) {
        applyCacheConcurrencyStrategy(holder);
      } else {
        applyCollectionCacheConcurrencyStrategy(holder);
      }
    }
    this.caches.clear();
    try
    {
      this.inSecondPass = true;
      processSecondPassesOfType(PkDrivenByDefaultMapsIdSecondPass.class);
      processSecondPassesOfType(SetSimpleValueTypeSecondPass.class);
      processSecondPassesOfType(CopyIdentifierComponentSecondPass.class);
      processFkSecondPassInOrder();
      processSecondPassesOfType(CreateKeySecondPass.class);
      processSecondPassesOfType(SecondaryTableSecondPass.class);

      originalSecondPassCompile();

      this.inSecondPass = false;
    }
    catch (RecoverableException e)
    {
      throw ((RuntimeException)e.getCause());
    }
    for (Map.Entry<Table, List<UniqueConstraintHolder>> tableListEntry : this.uniqueConstraintHoldersByTable.entrySet())
    {
      table = (Table)tableListEntry.getKey();
      List<UniqueConstraintHolder> uniqueConstraints = (List)tableListEntry.getValue();
      uniqueIndexPerTable = 0;
      for (UniqueConstraintHolder holder : uniqueConstraints)
      {
        uniqueIndexPerTable++;
        String keyName = StringHelper.isEmpty(holder.getName()) ? "key" + uniqueIndexPerTable : holder.getName();

        buildUniqueKeyFromColumnNames(table, keyName, holder.getColumns());
      }
    }
    Table table;
    int uniqueIndexPerTable;
    applyConstraintsToDDL();
  }

Я так понимаю, что он выполняет некоторую обработку первичного ключа, уникальных ограничений ... но на каких файлах hbm он это делает?и каково точное использование этой обработки и этого метода buildMappings ..?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...