¿Qué hace Consultas de mapeo Hibernate HBM?
<when_to_use>
Cargar esta habilidad al consultar archivos de mapeo .hbm.xml de Hibernate — extrayendo enlaces entidad-tabla, mapeos propiedad-columna, relaciones de colección (set/list/bag), descubrimiento de claves foráneas, o ejecutando escaneos por lotes en una capa de persistencia empresarial con más de 60 archivos HBM.
</when_to_use>
Habilidad de dominio para consultas dasel v3 en archivos de mapeo .hbm.xml de Hibernate.
Sintaxis de atributos (requerida): Los atributos XML usan el prefijo - en el modo amigable de dasel (predeterminado). name → -name, table → -table, column → -column.
Bandera de analizador (requerida): Siempre pasar -i xml explícitamente. No confiar en la detección automática para archivos .hbm.xml.
Descubrimiento de entidades
# Nombre completamente calificado de la clase de entidad Java
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.-name'
# Tabla de base de datos a la que mapea la entidad
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.-table'
Mapeo propiedad-columna
# Todos los nombres de propiedades Java mapeadas en la entidad
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.property.map(-name)'
# Todos los nombres de columna de base de datos para propiedades mapeadas
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.property.map(-column)'
Relaciones de colección
<set>, <list>, <bag> — relaciones uno a muchos.
# Todos los nombres de colecciones set (uno a muchos)
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.set.map(-name)'
# Todos los nombres de colecciones list
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.list.map(-name)'
Descubrimiento de claves foráneas
<many-to-one> — columnas de clave foránea que apuntan a otras entidades.
# Todos los nombres de columna de clave foránea
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.many-to-one.map(-column)'
# Todos los nombres de clase de entidad referenciados (el destino de la FK)
cat User.hbm.xml | dasel -i xml 'hibernate-mapping.class.many-to-one.map(-class)'
Mapeo por lotes entidad-tabla
Extraer pares entidad→tabla de todos los archivos .hbm.xml. Escribir en /tmp/ — nunca en el árbol fuente.
for f in $(fdfind -e hbm.xml .); do
entity=$(cat "$f" | dasel -i xml 'hibernate-mapping.class.-name' 2>/dev/null)
table=$(cat "$f" | dasel -i xml 'hibernate-mapping.class.-table' 2>/dev/null)
echo "$entity -> $table"
done > /tmp/entity_table_map.txt
Los archivos mal formados y los atributos faltantes producen valores vacíos mediante la supresión 2>/dev/null.