org.hibernate.cfg.Configuration类中的buildMappings方法有什么用?该方法返回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方法的确切用途是什么?