Ho due tabelle in due separati Oracle database (non schemi) che ho bisogno di partecipare Hibernate. Attualmente, ho due sessioni di Hibernate che escono nei database separati. Prima che qualcuno dica un'occhiata a Hibernate Shards, ho passato una buona parte della giornata a guardare quel sottoprogetto e ho scoperto che: è per dati partizionati orizzontali (tutte le tabelle devono essere in tutti i database AFAIK), non c'è modo per uno di dire a Shards di guardare solo in un database (Hibernate Shards Docs), e non viene più lavorato.Facendo un join oltre 2 tavoli in diversi database usando Hibernate
cose che ho pensato per cercare di risolvere questo problema:
facendo un
findAll()
o qualche variante ristretta di quella su entrambi i tavoli, e fare manualmente il join utilizzando alcuni loop. (Ok per molto piccoli tavoli - proibitivi da tavolini in su)Avere le sessioni di fare qualche tipo di interazione (non ho idea se questo è ancora fattibile - dovrà guardare il Hibernate Session API)
Rimozione del nome del database dalla stringa URL di diversi hibernate-xxxx.cfg.xml e inserirli nei file hbm.xml separati come questo:
<class name="foo" table="foo_table" schema="foo_schema" catalog="foo_db">
(non sembra lavorare da miei test iniziali e che sembra buco di sicurezza di dimensioni camion)Utilizzare il Pattern Repository (Incerto se il mio Java-Fu è abbastanza forte)
C'è qualcosa che sto trascurando in uno dei casi di cui sopra o può essere un altro modo che non ho elencato sopra ?
Per convenzione, si dovrebbe in realtà non interagiranno tra più database in questo modo, anche se alcuni lo fanno sostenerlo. È necessario ottenere separatamente le informazioni necessarie da ciascun database e consolidare le istanze di alcuni oggetti business autonomamente. – jdc0589
@ JDC0589 Ti stai riferendo al pattern di deposito o ad altri degli esotici modi in cui sto cercando di convincere Hibernate a fare ciò che mi serve per farlo? – Oberoc