Escolar Documentos
Profissional Documentos
Cultura Documentos
Inserir TítulodeAqui
Software
Inserir Título Aqui
Mapeamento Objeto-Relacional e Camada de Persistência
Revisão Textual:
Prof. Esp. Claudio Pereira do Nascimento
Mapeamento Objeto-Relacional
e Camada de Persistência
Caro Aluno(a)!
Normalmente, com a correria do dia a dia, não nos organizamos e deixamos para o
último momento o acesso ao estudo, o que implicará o não aprofundamento no material
trabalhado ou, ainda, a perda dos prazos para o lançamento das atividades solicitadas.
Assim, organize seus estudos de maneira que entrem na sua rotina. Por exemplo, você
poderá escolher um dia ao longo da semana ou um determinado horário todos ou alguns
dias e determinar como o seu “momento do estudo”.
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de
discussão, pois estes ajudarão a verificar o quanto você absorveu do conteúdo, além de
propiciar o contato com seus colegas e tutores, o que se apresenta como rico espaço de
troca de ideias e aprendizagem.
Bons Estudos!
UNIDADE
Mapeamento Objeto-Relacional e Camada de Persistência
Contextualização
Na maioria dos sistemas de software desenvolvidos que utilizam a tecnologia de orien-
tação a objetos e a tecnologia de banco de dados relacional, uma parte considerável do
tempo de desenvolvimento geralmente é usado com o mapeamento objeto-relacional,
uma tarefa relativamente complexa e propensa a erros. Apesar de serem tecnologias
diferentes, muitos sistemas de software utilizam conceitos de ambas em sua construção.
Em geral, as regras de negócio, interface de usuário e toda a camada de infraestrutura de
software são construídas utilizando tecnologias que contemplam a orientação a objetos
enquanto que os mecanismos de armazenamento físico de dados utilizam um Sistema
Gerenciador de Banco de Dados Relacional (SGBDR). Em sistemas de software dessa
natureza, inclusive aplicações Web, torna-se necessário que objetos de negócio de domínio
persistam entre diferentes seções de uso do sistema, sendo requerido um esforço adicional
para adaptar as estruturas de dados de objetos para estruturas relacionais (tabelas).
6
Mapeamento Objeto-Relacional
e Camada de Persistência
Este material teórico apresenta o mapeamento objeto-relacional e a camada de per-
sistência, enfatizando o mapeamento de objetos para o modelo relacional e o padrão de
projeto para persistência de dados Data Access Object (DAO). Para facilitar a compre-
ensão da representação do mapeamento objeto-relacional e da camada de persistência
de dados, serão utilizadas notações da Unified Modeling Language (UML), especifica-
mente os diagramas de classes, de pacotes e de implantação.
Informações mais técnicas sobre impedance mismatch podem ser encontradas em https://goo.gl/53lSls
7
7
UNIDADE
Mapeamento Objeto-Relacional e Camada de Persistência
Outro aspecto importante é comparar brevemente o que cada unidade anterior desta
disciplina abordou em relação ao modelo de processo de design apresentado na figura 1.
Vamos lá!
8
Quais são as principais atividades realizadas em um projeto (design) de banco de dados?
Para maiores detalhes sobre projeto de banco de dados, você também pode explorar o
livro Banco de dados: projeto e implementação de Machado (2014), disponibilizado na
Biblioteca Virtual Pearson, disponível em: https://goo.gl/g72tci
Mapeamento de Objetos
Ao utilizar tecnologias relacionadas com o paradigma orientado a objetos, principal-
mente uma linguagem de programação orientada a objetos para desenvolver sistemas de
software, e um sistema gerenciador de banco de dados relacional para armazenamento
físico dos dados, é necessário mapear os valores dos atributos de objetos persistentes
para tabelas, por conta das diferenças conceituais e de tecnologia entre o modelo de ob-
jetos e o modelo relacional. É importante ressaltar que o mapeamento objeto-relacional
não é algo exato e rígido, podendo ser adaptado de acordo com o problema em questão.
Não é à toa que esse procedimento de transposição de objetos para tabelas é chamado
de mapeamento.
Outra forma bastante comum de criação do esquema do banco de dados é a partir do mape-
amento do Modelo Entidade-Relacionamento (MER), também conhecido como Modelo ER.
9
9
UNIDADE
Mapeamento Objeto-Relacional e Camada de Persistência
Para manter uma padronização nos objetos mapeados e por ser uma das melhores
maneiras de associar identificadores a objetos mapeados para tabelas, uma coluna de
implementação (id) é utilizada como chave primária de cada tabela, lembrando que essa
coluna id é um identificador sem significado no domínio de negócio.
O procedimento mais simples é mapear cada classe como uma tabela e cada atributo como
uma coluna, mas nem sempre há correspondência unívoca entre classes e tabelas. Quanto
ao atributo, este pode ser mapeado para uma ou mais colunas, vai depender do contexto. ]
10
Figura 3 – Diagrama de classes de projeto
Fonte: Elaborado pelo autor
Vamos iniciar o mapeamento das classes relacionadas por meio de associações com
conectividade um-para-muitos. A figura 4 mostra as classes selecionadas para este
mapeamento. Ao realizar o mapeamento de uma relação com conectividade um-para-
-muitos, é importante verificar qual classe está com o lado muitos (*) do relacionamen-
to. Observe também o atributo idade na classe Cliente com a propriedade derivado
(/). Atributos derivados não são mapeados, pois seus valores são derivados de outros
atributos, havendo serventia somente em tempo de execução (na memória principal);
os valores dos atributos derivados são transientes, não sendo relevantes para persis-
tência de dados.
11
11
UNIDADE
Mapeamento Objeto-Relacional e Camada de Persistência
coluna. A tabela Locação cujas linhas (registros) estão sujeitas de ocorrer diversas vezes
é a que recebe as chaves estrangeiras correspondentes às tabelas Cliente e Carro. O
atributo idade da Classe Cliente não foi mapeado para uma coluna da tabela Cliente por
ser um atributo derivado.
Figura 5 – Classes relacionadas por meio de associação muitos-para-muitos com classe associativa
Fonte: Elaborado pelo autor
12
Quadro 2 – Mapeamento das classes relacionadas por meio de
associação muitos-para-muitos com classe associativa
A forma de como o banco de dados deve se comportar em relação aos registros de tabelas
mapeadas a partir de classes relacionadas por meio de composição pode ser implemen-
tada por meio de recursos do próprio Sistema Gerenciador de Banco de Dados Relacional
(SGBDR), tais como trigger e stored procedure.
13
13
UNIDADE
Mapeamento Objeto-Relacional e Camada de Persistência
coluna. Para assegurar a exclusão ou atualização dos registros das tabelas Motor e Roda
quando algum registro da tabela Carro for excluído ou atualizado, a chave primária da
tabela Carro também é chave primária das tabelas Motor e Roda, sendo nestas últimas
também uma chave estrangeira que faz referência à tabela Carro.
O próximo mapeamento a ser realizado é o das classes relacionadas por meio de ge-
neralização. Vale lembrar que o relacionamento de generalização representa uma relação
de generalização/especialização (herança). A figura 7 mostra as classes selecionadas para
este mapeamento. É importante saber que para esse tipo de relacionamento, há mais de
uma alternativa de mapeamento, sendo que cada uma tem suas vantagens e desvantagens.
A escolha de uma ou mais opções depende do sistema de software a ser desenvolvido e da
equipe de desenvolvimento. De acordo com Bezerra (2015), as opções de mapeamento
de generalização são: a) uma relação para cada classe da hierarquia; b) uma relação para
toda a hierarquia; c) uma relação para cada classe concreta da hierarquia.
14
cada classe da hierarquia para uma relação, sendo que a chave estrangeira da tabela
Passeio e da tabela Utilitário faz referência à chave primária da tabela Carro. Uma pos-
sível desvantagem desse mapeamento é a perda de desempenho por precisar manipular
os relacionamentos entre as tabelas (joins), mas esse problema tende a acontecer com
heranças profundas, ou seja, hierarquias de generalização e especialização com muitos
níveis, o qual não é o caso do diagrama de classes mostrado na figura 7.
Camada de Persistência
Além da construção do esquema de banco de dados, outros aspectos importantes e
relacionados ao armazenamento de objetos em um banco de dados relacional devem ser
definidos, principalmente a construção de uma camada de persistência.
O padrão de projeto Data Access Object (DAO) é uma estratégia para se construir
uma camada de persistência, pois possibilita o desacoplamento dos objetos de negócio
do banco de dados.
15
15
UNIDADE
Mapeamento Objeto-Relacional e Camada de Persistência
16
A camada de persistência de dados também pode ser representada no diagrama de
implantação, conforme mostra a figura 10. O componente de persistência é represen-
tado em um nó de processamento referente à camada de dados. Essa figura representa
o subsistema DAO em uma arquitetura física, denominado componente de persistência.
Observe que esse componente representa uma camada intermediária entre o servidor
de aplicação e o banco de dados, isolando os componentes da aplicação onde se en-
contram os objetos de negócio do Sistema Gerenciador de Banco de Dados (SGBDR).
Este material teórico aplicou algumas regras de mapeamento de objetos para o modelo
relacional. Vale lembrar que nem todas as regras de mapeamento foram aplicadas nesta
unidade, mas somente as regras necessárias para mapear o diagrama de classes do projeto
de sistema de software de locadora de carros. Também é importante enfatizar que as re-
gras de mapeamento não são exatas nem rígidas, podendo variar para cada situação. Isso
significa que você pode se deparar com o procedimento de mapeamento objeto-relacional
realizado de formas diferentes. De qualquer forma, é importante você buscar maiores in-
formações sobre o tema nas referências utilizadas e no material complementar.
Eu encerro esta disciplina por aqui. Muito obrigado pela sua atenção!
17
17
UNIDADE
Mapeamento Objeto-Relacional e Camada de Persistência
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Sites
Hibernate
https://goo.gl/1zbDsG
Biblioteca virtual Cruzeiro do Sul
https://goo.gl/g72tci
Oracle
https://goo.gl/8JWF
Leitura
Object-relational impedance mismatch
https://goo.gl/53lSls
Hibernate
https://goo.gl/aHFndK
Objeto de acesso a dados
https://goo.gl/fLWfR5
18
Referências
BEZERRA, E. Princípios de Análise e Projeto de Sistemas com UML. 3. ed. São
Paulo: Elsevier, 2015.
19
19