ActiveRecord, il Ruby ORM, si affida molto alle funzionalità di Ruby che non sono disponibili in Java, in particolare il metodo "method_missing" e la capacità di creare variabili membro dinamicamente. Le implementazioni di Active Record, il pattern, su Java sono quindi più difficili da gestire rispetto a Ruby. In genere, devi accettare uno dei seguenti difetti:
I campi -
del tuo oggetto sono accessibili tramite un metodo generico "get (fieldName)" piuttosto che direttamente, il che significa che perdi la sicurezza del tipo, il vantaggio principale dell'uso di Java piuttosto che di Ruby o
-
usi codice generato per le tue classi modello, quindi sei limitato ad avere un "modello anemico", che molti considerano un antipattern.
Per questo motivo, la maggior parte degli ORM Java utilizza i modelli di repository o oggetti di accesso ai dati, che semplificano l'eliminazione di questi problemi quando si lavora in un linguaggio statico. Il pattern Active Record è più comunemente usato da codice di persistenza codificato a mano, piuttosto che da ORM.
Consiglierei di imparare come utilizzare il modello di repository; è leggermente più complesso di Active Record, richiede un oggetto extra per classe di modello, ma è più flessibile a lungo termine.