Spring and JPA with two data sources (with annotations)

A few days I received a comment from my friend @sock_osg (you can follow on twitter) he recommends me to rewrite my previous post with annotations.

And well here is it. But the are more few things to comment about it, for example in the previous post there are not a Transactional capabilities between DB’s because I’m not using JTA transaction type.

Now for this example I write the code to support transactions between multiple data bases with different data sources, like I read on stack overflow:

if you find yourself with multiple entity managers, with corresponding tx managers, then you should consider using a single JtaTransactionManager instead. The entity managers should be able to participate in JTA transactions, and this will give you full transactionality across both entity managers, without having to worry about which entity manager you’re in at any one time.

You can download all code here, it’s hosted on my Github account, pull the code from the branch named «annotations».

Let’s review the most important files, first the DAO classes: Seguir leyendo

Oracle, one way to truncate tables

Para continuar con la ronda de oracle, una forma de borrar los datos de todas las tablas de un tablesapce de un usuario se puede ejecutar con los siguientes querys.

Lo que hacen es desacivar las restricciones de las relaciones e imprimir en el log todos los querys que vas a necesitar para guardarlos en un script y posteriormente ejecutarlo.

Me parece que es una forma sencilla y útil para limpiar todas las tablas de la base de un usuario.

-- Get query list to disable restrictions
SELECT 'ALTER TABLE'||' '||owner||'.'||table_name||' DISABLE CONSTRAINT '||constraint_name||' ;' FROM dba_constraints WHERE constraint_type = 'R' and owner='user name' and status = 'ENABLED';
-- Get querys to truncate all tables
SELECT 'TRUNCATE TABLE '||OWNER||'.'||TABLE_NAME||' ;' FROM DBA_TABLES WHERE OWNER='user name';
-- Get query list to enable restrictions
SELECT 'ALTER TABLE'||' '||owner||'.'||table_name||' ENABLE CONSTRAINT '||constraint_name||' ;' FROM dba_constraints WHERE constraint_type = 'R' and owner='user name' and status = 'ENABLED';

Referencias

Saludos!

Database tools, DBeaver and Squirrel

Herramientas de Base de Datos, DBeaver y Squirrel

Existen muchos manejadores de base de datos y generalmente utilizamos las herramientas oficiales de cada provedor, por ejemplo para Oracle esta el SQL developer, para MySQL el MySQL Workbench, etc…

Principalmente utilizo MySQL, sin embargo en Kubuntu tengo algunos problemas con el Workbench ya que no funciona muy bien con conexiones remotas o con tuneling por SSH, así que no me queda de otra que buscar alternativas, afortunadamente existen dos completamente open source =)!!

Las herramietas que utilizo para estos casos son :

Ambas muy buenas y son multiplatafora!! (utilizan java), pienso que no es bueno compararlas ya que cada una tiene su fuerte, por ejemplo:

  • squirrel, soporta HQL para trabajar con Hibernate y JPA, genera scripts de datos tanto de la estructura de  las tablas como los datos dentro de las mismas, exporta en xls, csv.
  • dbeaver, soporta tunneling de SSH de forma nativa y descarga los drivers de base de datos de automáticamente.

Ambas generan el diagrama entidad relación, tienen función de acutocomplementar los querys, entre otras características =).

Aquí dejo algunas imágenes:

Seguir leyendo