Dove dovrebbero andare i miei metodi che si collegano a DynamoDB?

2

Sono uno sviluppatore Java che lavora su un nuovo modulo per la mia app che si collega a, inserisce e aggiorna le informazioni di DynamoDB. Per molti dei nostri progetti, ho utilizzato un modello di progettazione MVC con un livello di servizio per astrarre la logica aziendale e colmare il divario tra i miei controller e il livello di accesso ai modelli / dati.

Normalmente usiamo PostgreSQL con un ORM per interagire con i dati.

Ho tutte le mie credenziali e dipendenze per connettermi al mio database DynamoDB. Non sono sicuro di quale sia la migliore pratica in termini di dove collocarlo. Leggo AWS SDK suggerisce di utilizzare i metodi builder per connettersi, cosa che ho, ma non ho familiarità con il modello di progettazione del builder (che potrebbe anche non essere pertinente).

La mia prima inclinazione è chiamare questa nuova classe di connessione DynamoDB DynamoDBClient , ma dopo aver fatto qualche ricerca non vedo nulla sull'aggiunta di un livello client a un livello software. Potrei creare un nuovo pacchetto ( com.carella.anthony.clients ), ma è una pratica comune?

Dove dovrei metterlo? O meglio, come dovrei costruirlo nella mia applicazione?

    
posta aCarella 05.01.2018 - 14:50
fonte

1 risposta

1

Suggerirei di aggiungere un nuovo pacchetto Infrastructure che contenga tutte le configurazioni e le connessioni per tutti i sistemi di database / caching / messaggistica.

Infrastructure
    \DynamoConnection.java
    \DynamoConfiguration.java
    \IDynamoConnection.java
    \IDynamoConfiguration.java        

Le credenziali devono essere gestite da una classe DynamoConfiguration che legge da un file di configurazione.

La connessione stessa deve essere gestita da una classe DynamoConnection che accetta un DynamoConfiguration come parametro e crea la connessione durante l'inizializzazione dell'oggetto.

public class DynamoConnection implements IDynamoConnection {

    private final AmazonDynamoDB connection;
    private final DynamoConfiguration config;

    public DynamoConnection(DynamoConfiguration config) {
        this.config = config;
        this.connection = AmazonDynamoDBClientBuilder.standard()
            .withRegion(this.config.region())
            .withCredentials(this.config.credentials())
            .withClientConfiguration(this.config.clientConfiguration())
            .build();
    }

    public AmazonDynamoDB connection() {
        return this.connection;
    }
}

Sembrerebbe qualcosa di simile al codice sopra.

    
risposta data 05.01.2018 - 17:28
fonte

Leggi altre domande sui tag