Usando o Serviço Mediador de Dados do Java Database Connectivity para Acesso a Dados

As seguintes etapas demonstram como criar os metadados para um DMS (data mediator service JDBC (Java™ Database Connectivity), bem como instanciar o gráfico de dados do DMS.

Procedimento

  1. Crie o depósito de informações do provedor de metadados. Isso pode ser usado para criar metadados, tabelas, colunas, filtros, argumentos de filtro, limitações de banco de dados, chaves, objetos order-bys e relacionamentos.
    MetadataFactory factory = MetadataFactory.eINSTANCE;
    Metadata metadata = factory.createMetadata();
  2. Crie a tabela para os metadados. Isso pode ser feito de duas maneiras. O depósito de informações do provedor de metadados pode criar a tabela e, em seguida, a tabela pode se incluir nos metadados já criados ou os metadados podem incluir uma nova tabela, nesse caso, uma nova tabela é criada. Como envolve menos etapas, este exemplo utiliza a segunda opção para criar uma tabela chamada CUSTOMER.
    Table custTable = metadata.addTable("CUSTOMER");
  3. Defina a tabela raiz para os metadados. Novamente, isso pode ser feito de duas maneiras. A tabela pode se declarar a raiz ou os metadados podem definir sua própria tabela raiz. Para a primeira opção, codifique:
    custTable.beRoot();
    Se quiser utilizar a segunda opção, codifique:
    metadata.setRootTable(custTable)
  4. Configure as colunas da tabela. A tabela de exemplo é chamada CUSTOMER. Cada coluna é criada utilizando seu tipo. Os tipos de colunas nos metadados podem ser somente os tipos suportados pelo driver JDBC que está sendo utilizado. Se você tiver dúvidas sobre quais tipos o driver JDBC que está sendo utilizado suporta, consulte a documentação do driver JDBC.
    Column custID = custTable.addIntegerColumn("CUSTID");
    custID.setNullable(false);
    Esse exemplo cria um objeto de coluna para essa coluna, mas não para as demais. O motivo disso é que essa coluna é a chave primária e é usada para configurar a chave primária da tabela depois que o restante das colunas for incluída. Uma chave principal não pode ser nula; portanto, custID.setNullable(false) evita que isso ocorra. Incluindo as demais colunas:
    custTable.addStringColumn("CUSTFIRSTNAME");
    custTable.addStringColumn("CUSTLASTNAME");
    custTable.addStringColumn("CUSTSTREETADDRESS");
    custTable.addStringColumn("CUSTCITY");
    custTable.addStringColumn("CUSTSTATE");
    custTable.addStringColumn("CUSTZIPCODE");
    custTable.addIntegerColumn("CUSTAREACODE");
    custTable.addStringColumn("CUSTPHONENUMBER");
    
    custTable.setPrimaryKey(custID);
  5. Crie outras tabelas conforme necessário. Para este exemplo, crie a tabela Orders. Cada pedido é feito por um Cliente.
    Table orderTable = metadata.addTable("ORDER");
    
    Column orderNumber = orderTable.addIntegerColumn("ORDERNUMBER");
    orderNumber.setNullable(false);
    
    orderTable.addDateColumn("ORDERDATE");
    orderTable.addDateColumn("SHIPDATE");
    Column custFKColumn = orderTable.addIntegerColumn("CUSTOMERID");
    
    orderTable.setPrimaryKey(orderNumber);
  6. Crie chaves estrangeiras para as tabelas que precisam de relacionamentos. Neste exemplo, os pedidos têm uma chave estrangeira que aponta para o cliente que fez o pedido. Para criar uma relação entre as duas tabelas, você deve primeiro criar uma chave estrangeira para a tabela Orders.
    Key custFK = factory.createKey();
    custFK.getColumns().add(custFKColumn);
    
    orderTable.getForeignKeys().add(custFK);
    O relacionamento usa duas chaves, a chave pai e a chave filho. Como nenhum nome específico é fornecido, a concatenação padrão de CUSTOMER_ORDER é o nome utilizado para essa relação.
    metadata.addRelationship(custTable.getPrimaryKey(), custFK);
    A relação padrão inclui todos os clientes que têm pedidos. Para obter todos os clientes, mesmo se eles não tiverem pedidos, esta linha também é necessária:
    metadata.getRelationship("CUSTOMER_ORDER") 
                                  .setExclusive(false); 
    Agora que as duas tabelas estão relacionadas uma à outra, você pode incluir um filtro na tabela Customer para localizar clientes com características específicas.
  7. Especifique quaisquer filtros necessários. Neste exemplo, defina os filtros para a tabela Customer para localizar todos os clientes em um determinado estado, com um determinado sobrenome, que tenham feito pedidos.
    Filter filter = factory.createFilter();
    filter.setPredicate("CUSTOMER.CUSTSTATE = ? AND CUSTOMER.CUSTLASTNAME = ?");
    
    FilterArgument arg1 = factory.createFilterArgument();
    arg1.setName("CUSTSTATE");
    arg1.setType(Column.STRING);
    filter.getFilterArguments().add(arg1);
    
    FilterArgument arg2 = factory.createFilterArgument();
    arg2.setName("CUSTLASTNAME");
    arg2.setType(Column.STRING);
    filter.getFilterArguments().add(arg2);
    
    custTable.setFilter(filter);
  8. Inclua qualquer ordem por objetos necessários. Neste exemplo, defina a ordenação por objeto para classificar pelo primeiro nome do cliente.
    Column firstName = ((TableImpl)custTable).getColumn("CUSTFIRSTNAME");
    OrderBy orderBy = factory.createOrderBy();
    orderBy.setColumn(firstName);
    orderBy.setAscending(true);
    metadata.getOrderBys().add(orderBy);
    Isso conclui a criação dos metadados para esse DMS do JDBC.
  9. Crie uma conexão ao banco de dados. Este exemplo não mostra a criação da conexão com o banco de dados; ele supõe que o cliente SDO chama o método connect() que faz isso. Consulte o tópico,
  10. Instancie e inicialize o objeto DMS JDBC (dataGraph). O cliente SDO executa essas ações. Para este exemplo:
    ConnectionWrapperFactory factory = ConnectionWrapperFactory.soleInstance;
    connectionWrapper = factory.createConnectionWrapper(connect());
    JDBCMediatorFactory mFactory = JDBCMediatorFactory.soleInstance;
    JDBCMediator mediator = mFactory.createMediator(metadata, connectionWrapper);
    DataObject parameters = mediator.getParameterDataObject();
    parameters.setString("CUSTSTATE", "NY");
    parameters.setString('CUSTLASTNAME', 'Smith');
    DataObject graph = mediator.getGraph(parameters);
    Agora que possui o dataGraph, as informações podem ser manipuladas. O exemplo a seguir contém a manipulação de dados básica em um objeto DataGraph.
    Exemplo: Manipulando Dados em um Objeto DataGraph

    Usando o DataGraph simples que foi criado durante a tarefa Usar o serviço do mediador de dados do Java Database Connectivity para acesso a dados, segue alguma manipulação de dados típica.

    Primeiro, obtenha a lista de clientes, em seguida, para cada cliente obtenha cada pedido, em seguida, imprima o nome do cliente e a data do pedido. (Para esse exemplo, suponha que você já conheça o sobrenome Smith).
    List customersList = graph.getList("CUSTOMER");
    Iterator i = customersList.iterator();
    while (i.hasNext())
    {
     DataObject customer = (DataObject)i.next();
    List ordersList = customer.getList("CUSTOMER_ORDER");
    Iterator j = ordersList.iterator();
    while (j.hasNext())
    {
    DataObject order = (DataObject)j.next();
    System.out.print( customer.get("CUSTFIRSTNAME") + " ");
    System.out.println( order.get("ORDERDATE"));
     }
    }
    Agora altere cada cliente com nome Will para Matt.
    i = customersList.iterator();
    while (i.hasNext())
    {
     DataObject customer = (DataObject)i.next();
     if (customer.get("CUSTFIRSTNAME").equals("Will"))
     {
      customer.set("CUSTFIRSTNAME", "Matt");
     }
    }
    Exclua a primeira entrada do Cliente.
    ((DataObject) customersList.get(0)).delete();
    Inclua um novo DataObject no gráfico
    DataObject newCust = graph.createDataObject("CUSTOMER");
    newCust.setInt("CUSTID", 12345);
    newCust.set("CUSTFIRSTNAME", "Will");
    newCust.set("CUSTLASTNAME", "Smith");
    newCust.set("CUSTSTREETADDRESS", "123 Main St.");
    newCust.set("CUSTCITY", "New York");
    newCust.set("CUSTSTATE", "NY");
    newCust.set("CUSTZIPCODE", "12345");
    newCust.setInt("CUSTAREACODE", 555);
    newCust.set("CUSTPHONENUMBER", "555-5555");
    
    graph.getList("CUSTOMER").add(newCust);
    Submeta as mudanças.
    mediator.applyChanges(graph);
  11. Submeta as informações alteradas ao DMS para atualizar o banco de dados.

Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tdat_jdbcmeduse
Nome do arquivo: tdat_jdbcmeduse.html