Hibernate obtener el nombre de las tablas existentes | Java

Ya sea que necesitemos para realizar un historial de las tablas o simplemente deseemos saber cuales son las tablas creadas en nuestra base de datos; Hibernate nos provee una clase llamada Table que representa una tabla presente en la base de datos y tiene métodos que nos permiten obtener en sí el esquema de la tabla.
import java.util.ArrayList;
import java.util.List;

import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.mapping.Table;

public class DatabaseUtil {

    public List<Table> getTableNames() {
        List<Table> tables = null;
        try (StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build()) {
            tables = new ArrayList<Table>(new MetadataSources(serviceRegistry).buildMetadata().collectTableMappings());
            for (int i = 0; i < tables.size(); i++)
                System.out.println(tables.get(i).getName());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tables;
    }
}
Para que te funcione debes tener configurado tu archivo hibernate.cfg.xml con la etiqueta mapping de todas las entidades que tengas.

Primero creamos una función que devuelva una lista de la clase Table, después registramos un nuevo servicio dentro de un try para que se cierre automáticamente al finalizar el bloque. Finalmente instanciamos un nuevo ArrayList de la clase table y le enviamos como parámetro la colección que nos devuelve los metadatos.
Hibernate Nombre Tablas
Se le agregó un for que imprima el nombre de todas las tablas existentes, y debería mostrarse como el gráfico anterior. Con este método obtenemos todas las tablas y sus nombres.

Comentarios

Entradas populares