Je suis en train de créer un outil de données permettant aux utilisateurs de créer du code ETL. Avant d'en arriver là, j'ai besoin de construire un 'agent' qui s'occupera de tous les travaux liés à la base de données que l'outil devra effectuer. Plus précisément, cela impliquerait -Guide sur la conception de classes Java
- Sélection, l'insertion, la mise à jour et la suppression
- plusieurs enregistrements
- de/vers/dans différentes tables avec des mises en page différentes
Ma pensée est de construire un classe avec les 4 méthodes suivantes -
ArrayList[][] selectFromRepository (String dbTable, String[] columnNames)
ArrayList[][] selectFromRepository (String dbTable, String[] columnNames, Map<String, Object> predicate)
void insertToRepository (String dbTable, Map<String, Object>[] payload)
void updateInRepository (String dbTable, Map<String, Object>[] payload, Map<String,Object>[] predicate)
void deleteFromRepository (String dbTable, Map<String, Object>[] payload)
selectFromRepository répondra avec une 2D liste des éléments hétérogènes basée sur les types des éléments dans "columnNames" récupérés de l'argument "dbTable". La version surchargée permet de spécifier un prédicat de clause where via une carte "prédicat". Je pensais que je pouvais vérifier le type de l'élément objet de la carte transmis à la méthode et construire la clause where correctement (par exemple
"where " + key + " = '" + predicate.get(k) + "'" if predicate.get(k) instanceOf String
et ainsi de suite ..
D'autres méthodes fonctionneront avec des méthodes de mise à jour prédicat travaillant similaire à celui de la sélection surchargée
Je suis à la recherche de vos conseils sur les meilleures pratiques, les inconvénients de mon idée (et donc les avantages de vous faire à votre façon :)). Aussi, serait-il logique de construire un type DB appelé élément DB qui accepte tous les types de données DB connus avec lesquels je pense travailler en tant qu'entrée de type, puis l'utiliser à la place du type "Object" dans les arguments map/arraylist?
Merci d'avance!
JDBC est implémenté, il implémente la plupart des fonctionnalités que vous recherchez. –