DBUnit – Récupérer l’ordre de dépendances entre les tables

Voici une fonctionnalité de DBUnit qui donne l'ordre des dépendances au niveau des contraintes d'intégrité entre les tables.

Ceci permet d'avoir l'ordre d'insertion et de suppression entre les tables dépendantes.

Pour cela, ce post présente le code du classe Java indépendante qui va fournir en sortie l'ordre de dépendances entre les tables.

Affichage de l'ordre de dépendance

Voici l'affichage de sortie :

Ordre de dépendance pour l'insertion de données entre la table principale 'panier' et ses tables liées :
produit => article => lignepanier => client => (*) panier => panier_lignepanier => compte

Nous avons ainsi l'ordre entre les contraintes d'intégrité des tables.

Nous savons dans quel ordre insérer les données.

De même, en lisant dans le sens inverse des flèches, nous savons l'ordre de suppression des données.

Classe Java

package org.demo;

import java.sql.Connection;
import java.sql.DriverManager;

import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.database.search.TablesDependencyHelper;

public class DBUnitListTable {
	
	public static void main(String[] args) throws Exception {
    	// database connection
        Connection jdbcConnection = DriverManager.getConnection(
                "jdbc:postgresql://localhost:5432/demo", 
                "demo", 
                "demo");
    	IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);

    	String rootTable = "panier";
    	
        // Tables liées
    	String[] tables = TablesDependencyHelper.getAllDependentTables(connection, rootTable);
    	
    	System.out.println("Ordre de dépendance pour l'insertion de données entre la table principale '"+rootTable+"' et ses tables liées :");
    	boolean isFirst = true;
    	for(String table : tables) {
    		if(isFirst) {
    			isFirst = false;
    		} else {
    			System.out.print(" => ");
    		}
    		if(rootTable.equalsIgnoreCase(table)) {
        		System.out.print("(*) ");
    		}
    		System.out.print(table);
    	}
    }
	
}

La ligne suivante permet d'indiquer la table principale :

String rootTable = "panier";

Un commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.