Sto avendo un'applicazione web server con Oracle come database. In questo momento ho origine dati creati usando il server weblogic. Anche usando eclipse linkg JPA per fare entrambe le operazioni di lettura e scrittura (inserisci, leggi e aggiorna). Ora vogliamo separare dataSources per le transazioni read (read) e wrtie (insert o update).Possiamo avere più origini dati per il singolo database
mio dataSource corrente è come segue:
JNDI NAME : jdbc/POI_DS
URL : jdbc:oracle:thin:@localhost:1521:XE
utilizzo di questo, sto facendo entrambe le operazioni di lettura e scrittura.
Che cosa succede se faccio la seguente:
JNDI NAME : jdbc/POI_DS_READ
URL : jdbc:oracle:thin:@localhost:1521:XE
JNDI NAME : jdbc/POI_DS_WRITE
URL : jdbc:oracle:thin:@localhost:1521:XE
sapevo che utilizza XA origine dati che possiamo definire più origini dati. Posso fare la stessa cosa senza XA dataSource. Qualcuno ha provato questo tipo di approccio.
:: AGGIORNAMENTO ::
Grazie a tutti per le vostre risposte ho implementato seguente soluzione.
Ho preso l'approccio di database multipli. dove definirai più transactionManagers
e managerFactory
. Ho preso solo single non xa dataSource (JNDI) che è referenziato nel bean EntityManagerFactory
.
è possibile Reefer seguenti link qui che sono per più origini dati Multiple DataSource Approach defining @transactional value
esplorati anche sui gestori di transazioni org.springframework.transaction.jta.WebLogicJtaTransactionManager
e org.springframework.orm.jpa.JpaTransactionManager
pure.
domanda veloce, proprietà URL definita differentemente per oro, argento e bronzo. jdbc: HSQLDB: hsql: // localhost: $ {} db.port.gold/blog. Nel mio caso, se uso la stessa cosa, ha qualche problema. Inoltre sto usando EclipseLink come mio JPA. Lascia che esegua questo approccio prima. – user1268890
Basta creare un Enum con le proprietà READ e WRITE, potrebbe funzionare allo stesso modo. Fornisci le proprietà richieste, di cui hai bisogno. Non penso che ci sarebbero alcuni problemi aggiuntivi riguardo al provider JPA. – user