DataMapper + JDBC no Magic xpi 4.13.3

Veja nesta publicação como acessar dados (SGBD) diretamente com o JDBC.  

Um recurso muito interessante que foi introduzido na versão 4.13.3 do Magic xpi, é a habilidade de acessarmos bases de dados através de classes JDBC, sem passar pelos gateways (drivers nativos) do  Magic xpi.

É um novo componente disponível na biblioteca do produto, chamado (justamente)JDBC:

 

Só que diferente de outros componentes (baseados em SDK ou não), este foi criada para uso apenas “dentro” de um DataMapper:

 

e por isso ele não é listado no ToolBox do Studio, com os demais.

Só temos acesso a ele ao abrir um DataMapper para edição/configuração.

Pré-Requisitos

Inicialmente, precisamos definir qual ou quais dos BDs suportados utilizaremos em nosso ambiente Magic xpi, Este novo componente acessa as bases de dados através da tecnologia JDBC e,

portanto, faz-se necessário obter e instalar “manualmente” os drivers JDBC necessários para cada BD, no ambiente Magic xpi. Veja alguns exemplos:

MSSQL = mssql-jdbc-8.4.1.jre8.jar

MySQL = mysql-connector-java-8.0.23.jar

Oracle = ojdbc7.jar

DB2/400 = Jt400.jar

DB2 = db2jcc4.jar, db2jcc.jar e db2jcc_license_cu.jar

 

Estes drivers (JARs) devem ser copiados nas seguintes pastas do ambiente Magic xpi, cfe. a necessidade (BD que for necessário acessar):

Runtime\Java\DatabaseDrivers
Runtime\Gigaspaces-xpi\lib\platform\ext

 

Veja como ficaria para MSSqlServer, MySQL e Oracle:

Novo “Recurso”

Para dar acesso às bases de dados, um novo recurso do tipo “JDBC” está disponível:

 

Ele permite configurar os detalhes de acesso ao SGBD, de forma muito similar a como faríamos com um recurso do tipo DataBase.

Veja alguns exemplo de configurações possíveis:

MSSQL
  • jdbc:sqlserver://[Host]:[Port];databaseName=[DatabaseName]
  • jdbc:sqlserver://[Host]:[Port];databaseName=[DatabaseName];integratedSecurity=true
  • jdbc:sqlserver://[Host]:[port];databaseName=[DatabaseName];user=[UserName];password=[Password]
MySQL
  • jdbc:mysql://[Host]:[Port]/[DatabaseName]
  • jdbc:mysql://address=(host=[Host])(port=[Port])(user=[UserName])(password=[Password])/[DatabaseName]
  • jdbc:mysql://[Host]:[Port]/[DatabaseName]?user=[UserName]&password=[Password]&characterEncoding=[Encoding]
Oracle
  • jdbc:oracle:thin:@[Host]:[Port]:[SID]
  • jdbc:oracle:thin:[User]/[Password]@[Host]:[Port]:[SID]
  • jdbc:oracle:thin:@//[Host]:[Port]/[Service Name]
  • jdbc:oracle:thin:[User]/[Password]@//[Host]:[Port]/[Service Name]

 

*Nota: Um propriedade muito importante, mas que não detalharemos agora, é a 'LocalAgent=True/False'. É o principal motivador da criação deste novo componente e permite acessar bases de dados em estilo "remoting". Mas isso será abordado em futuras postagens. Por agora, usaremos sempre o valor 'False'.

 

Utilização

Feita a configuração do recurso, o uso do componente é auto explicativo. Ele funciona exatamente como um schema DataBase do DataMapper:

Quando usado na origem do mapeamento, podemos executar SELECTs em bases de dados:

 

Quando no destino do mapeamento, nos permite efetuar INSERTs, UPDATEs ou DELETEs:

 

Do ponto de vista das regras de negócio, ele (JDBC) é funcionalmente idêntico a acessar dados via resource/schema DataBase.

A mudança é a tecnologia de acesso aos dados empregada pelo Magic xpi Server, e como também veremos num futuro não tão distante, a possibilidade do remoting.

 

 

Mais informações

Para finalizar, um novo grupo de Classes de Erros está disponível para identificar possíveis inconformidades na execução deste componente:

 

e ele também é sensível a chave DebugMapper=Y do IFS.INI:

 

Manoel Frederico Silva – Gerente de Tecnologia e Evangelista MAGIC – Magic Brasil
Manoel Frederico Silva – Evangelista MAGIC – Magic Brasil

 

Para receber os artigos do Blog Magic Brasil em primeira mão no seu email, registre-se aqui

 

Deixe um comentário

O seu endereço de e-mail não será publicado.