Post on 22-Feb-2017
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
© 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
© 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
© 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
© 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. 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
© 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