hana xs data services - sap inside track joinville 2015 - fábio pagoti

30
Fabio Pagoti Desenvolvedor na Dux Innovation Instrutor ABAP e UI5 14 de Agosto de 2015 HANA XS Data Services

Upload: fabio-luiz-esperati-pagoti

Post on 22-Feb-2017

480 views

Category:

Software


2 download

TRANSCRIPT

Fabio Pagoti

Desenvolvedor na Dux Innovation

Instrutor ABAP e UI5

14 de Agosto de 2015

HANA XS Data Services

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 2

Agenda

Contextualização

XSJS, Aplicações Nativas em HANA

Criação de tabelas no HANA

Script, .hdbtable, Core Data Services

Acesso ao banco no XSJS

$.db, $.hdb, XSDS

Exemplos

Usando XSDS

Conclusão

Vantagens e Desvantagens, o que mais esperar? Links úteis

ContextualizaçãoXSJS, Aplicações Nativas em HANA

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 4

Mapa de Informações do Desenvolvedor¹Áreas de interesse de um desenvolvedor HANA

¹ http://help.sap.com/hana/SAP_HANA_Developer_Information_Roadmap.pdf

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 5

Um pequeno exemplo de XSJSResultado de chamada de serviço

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 6

Um pequeno exemplo de XSJSCódigo Fonte do serviço

Chamada do front end é ser feita via:

JavaScript Nativo

jQuery

Classe “model” no UI5

Outra bibliotecas, etc

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 7

Regra de negócio das aplicações nativas

Espalhada em:

XSJS

Views

Analytic

Attribute

Calculation

Procedures

PAL, R, etc

• Cada tipo de artefato tem seu foco, mas há uma

sobreposição de responsabilidades

• Todas os artefatos ao lado possuem recursos

para acesso ao banco

Criação de tabelas no HANAScript, .hdbtable, Core Data Services

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 9

Criação de tabelas no HANAScript

Vantagens

Maior proximidade com o banco

Definição de chaves estrangeiras

Definição de “cascades”

Desvantagens

Não “transportável”

Artefato só possui versão de runtime

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 10

Criação de tabelas no HANAArquivo .hdbtable

Vantagens

Artefato design-time

Abstração do banco

Transportável

Desvantagens

Uma tabela por arquivo

Não oferece todos os recursos do banco

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 11

Criação de tabelas no HANAArquivo .hdbdd (Core Data Services)

Vantagens

Definição de tipos

Múltiplicas tabelas e visões no mesmo

contexto

Reutilização de contextos

Definição de associações

Desvantagens

Não oferece todos os recursos do banco

Acesso ao banco no XSJS$.db, $.hdb, XSDS

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 13

$.dbObsoleto

Primeira forma de acesso a

tabelas e procedures

Semelhante a JDBC

Chamadas idênticas a

usadas no SQL Console mas

em forma de string

Preenchimento de

parâmetros requer

conversões e deixa código

longo

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 14

$.hdbPrincipal forma de acesso hoje

Simplicidade, conveniência, completude, desempenho

Queries ainda feitas em strings

Preenchimento de parâmetros facilitada

Procedures podem ser feitas em função proxy

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 15

XS DB UtilitiesXS Data Services (DS) + XS Procedures

Não é um namespace mas sim uma lib (arquivo .xsjslib)

ORM via Fluent API (semelhante ao Hibernate ou NHibernate)

Ações ao banco feitas como métodos de uma classe criada dinamicamente

Preenchimento de parâmetros através de objetos

ExemplosUsando XSDS

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 17

Arquivo .hdbddTabela de cabeçalho e item

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 18

Importando o XSDS e usando criando uma EntidadeCriando a classe Entidade via importEntity ou defineEntity

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 19

Criando um registroTransformando um objeto em tupla

Tuplas são tratadas como objetos

Classe Header é instanciada

Construtor valida passagem de campos

chave (ou usa sequence)

Registro é inicialmente transiente

Persistência é feita no banco via método

$save

Método $save valida colunas “not null”

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 20

Selecionando um registroTupla em objeto

$get ~ SELECT SINGLE

Internamente alguns valores são

armazenado em objetos e não

variáveis simples [15-16]

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 21

Atualizando vários registrosAtualização em massa

Para encontrar Items, é

preciso fornecer uma

referência válida de

Header

Múltiplos registros são

meros arrays

$saveAll opera em vários

objetos

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 22

Por padrão associações já realizam JOINs!

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 23

Criando queries complexasJoin com parse de colunas

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 24

SQL gerado pela chamada $query

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 25

Outras capacidadesSomente outros exemplos

Adicionar colunas no resultado de uma query

Funções de agregação

Encapsulamento de procedures em funções (via XS Procedures)

Gerenciamento de transações (COMMIT, ROLLBACK)

Lazy loading

CascateDiscard

Suporte a vários tipos de associação entre tabelas

ConclusãoVantagens e Desvantagens, o que mais esperar?

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 27

Vantagens e DesvantagensDo XSDS

Vantagens

Abstração ótima

Código mais enxuto

Usa $.hdb internamente

Pode ser usado para criar dados de teste

facilmente para XS Unit

Pode tratar tabelas antigas como se fossem

criadas em contextos de CDS (.hdbdd)

Desvantagens

importEntity e defineEntity tem um custo

computacional (tratado no SPS10)

Alguns métodos podem ser avassaladores se

mal usados (evite usar tudo que for

unmanaged)

Ainda não está 100% preparado para substituir

$.hdb em todos os casos

Documentação ainda é fraca

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 28

O que eu espero?Novas libs!

XSDS é (provavelmente) a primeira lib de XS standard a existir

Uma vez que o HANA suporte NodeJS (planejado para o SPS11), um

mundo de libs podem surgir

XSDS deve ficar mais estável e inteligente

Abstração de outros namespaces (como $.web)

© 2013 SAP AG or an SAP affiliate company. All rights reserved. 29

Links úteis

Documentação XS DB Utils

SAP HANA SPS 09: New Developer Features; XSDS (XS Data Services) - Thomas Jung

XS Data Services: A Native CDS Client and Query Builder for XS JavaScript - Ralph

Benzinger

XS Data Services: Working With CDS Entities - Ralph Benzinger

XS Data Services: Building CDS Queries - Andreas Roth

© 2013 SAP AG or an SAP affiliate company. All rights reserved.

Obrigado!

Fábio Pagoti – Desenvolvedor HANA na

@fabiopagoti

ABAP101.com

HanaBrasil.com.br