Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Inserir Título Aqui 
Inserir Título Aqui
Arquitetura de Software
Mapeamento Objeto-Relacional e Camada de Persistência
Responsável pelo Conteúdo:
Prof. Me. Wilson Vendramel
Revisão Textual:
Prof. Esp. Claudio Pereira do Nascimento
Nesta unidade, trabalharemos os seguintes tópicos:
• Mapeamento Objeto-Relacional e Camada de Persistência.
Fonte: iStock/Getty Im
ages
Objetivos
• Entender o mapeamento de objetos para o modelo relacional e a construção da 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”.
No material de cada Unidade, há videoaulas e leituras indicadas, assim como sugestões 
de materiais complementares, elementos didáticos que ampliarão sua interpretação e 
auxiliarão o pleno entendimento dos temas abordados.
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!
Mapeamento Objeto-Relacional 
e Camada de Persistência
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).
Um framework de mapeamento objeto-relacional pode ajudar a reduzir considera-
velmente a complexidade no processo de desenvolvimento de sistemas de software, 
diminuindo o tempo gasto na implementação e aumentando a qualidade do software. 
De qualquer forma, é preciso entender que a adoção de um framework objeto-relacio-
nal não resolverá todos os problemas causados pelas diferenças existentes entre essas 
duas tecnologias.
6
7
M apeamento 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.
Modelo de Objetos Versus Modelo Relacional
As tecnologias que utilizam o paradigma orientado a objetos são comumente adotadas 
no desenvolvimento de aplicações de software, em contrapartida a tecnologia de banco 
de dados relacional também está bastante presente na maioria dos sistemas de software, 
inclusive nos sistemas distribuídos e baseados na Web. Apesar da utilização mútua dessas 
tecnologias, cada uma delas tem como fundamentos bem distintos. Enquanto no modelo 
de objetos, os elementos correspondem a abstrações de comportamento, no modelo 
relacional, os elementos correspondem aos dados no formato de tabela.
Em um sistema de software orientado a objetos, os elementos (objetos) podem ser 
transientes ou persistentes. Os objetos transientes só existem em tempo de execução, 
isto é, na memória da máquina durante uma sessão de uso do sistema. Os objetos visão 
e objetos controladores são exemplos típicos de objetos transientes. Os objetos persis-
tentes existem durante várias execuções do sistema; para tal, esses objetos precisam 
ser armazenados quando a sessão de uso termina e recuperados quando outra sessão 
é inicializada. Os objetos do tipo modelo são exemplos típicos de objetos persistentes. 
(BEZERRA, 2015)
No caso de objetos persistentes, surge o problema de conciliar as informações repre-
sentadas pelo estado de um objeto e pelos dados armazenados na forma de registros em 
uma tabela. Esse problema, denominado impedance mismatch, representa um conjun-
to de conceitos e dificuldades técnicas quando um banco de dados relacional é utilizado 
por um sistema de software orientado a objetos.
Informações mais técnicas sobre impedance mismatch podem ser encontradas em https://goo.gl/53lSls
Certo, há diferenças entre as representações do modelo de objetos e o modelo rela-
cional. Nesse caso, o que devemos fazer?
Um esforço significativo de desenvolvimento recai sobre a solução que o desenvolve-
dor de software deve dar a esse problema, tentando evitar a falta de consistência entre 
as informações quando os objetos vêm do banco de dados para a memória principal ou 
vão desta última para o banco de dados.
7
UNIDADE 
Mapeamento Objeto-Relacional e Camada de Persistência
Projeto de Banco de Dados
Na Unidade 1, foi apresentando um modelo geral do processo de design de sistema 
de software. Vamos lembrar rapidamente desse modelo? Eu penso ser importante rever 
este modelo antes de darmos sequência na explanação dos conceitos desta unidade. 
A figura 1 apresenta um modelo geral do processo de design de sistema de software 
(Sommerville, 2011). Observe que cada atividade de projeto resulta em uma saída de proje-
to. O projeto de arquitetura resulta na arquitetura de sistema; o projeto de interface resulta 
na especificação de interface; o projeto de componentes resulta na especificação de compo-
nentes e o projeto de banco de dados resulta na especificação de banco de dados. Observe 
ainda que o projeto de banco de dados é uma das atividades de projeto (design) e que apre-
senta relações com o projeto de arquitetura e o projeto de componentes, mostrando que 
o projeto de banco de dados é influenciado por ambos os projetos. Vale lembrar que todas 
essas saídas (especificações) compõem o projeto (design) de arquitetura de software. 
Figura 1 – Modelo geral do processo de design
Fonte: Sommerville, 2011 p.26
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á!
A Unidade 1, conforme já foi dito, abordou o modelo geral do processo de design de 
sistema de software; a Unidade 2 abordou o projeto de arquitetura (padrões de projeto 
e padrões de arquitetura); a Unidade 3 refinou a abordagem do projeto de arquitetura 
(arquitetura lógica e arquitetura física), o projeto de interface (de classe, subsistema e 
componente) e o projeto de componentes. Já a Unidade 4 aborda o projeto de banco 
de dados. Desta forma, as quatro atividades de projeto (design) mencionadas na figura 1 
são contempladas nesta disciplina.
8
9
Quais são as principais atividades realizadas em um projeto (design) de banco de dados?
Inicialmente, você pode pensar na construção do esquema do banco de dados. Você 
está certo, porém essa não é a única atividade relacionada. Quando projetamosum 
banco de dados, nós pensamos também em outras atividades, como a criação de índi-
ces, a criação de visões, a permissão de direitos de acesso, o procedimento de backup 
dos dados. Isso significa que o projeto de um banco de dados vai além da construção 
do esquema do banco. Mesmo assim, esta unidade se concentra em criar o esquema do 
banco de dados. O diferencial é que o esquema será criado a partir do modelo de obje-
tos, especificamente do modelo de classes.
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.
Como é feito esse mapeamento?
O mapeamento de objetos para o modelo relacional é feito a partir do modelo de classes.
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.
A construção do esquema do banco de dados a partir do modelo de classes é seme-
lhante ao mapeamento do modelo ER, mas não idêntico, pois o modelo de classes tem 
mais recursos do que o modelo ER. Além disso, o modelo ER é um modelo de dados, 
enquanto o modelo de classes representa objetos (dados e comportamento), sendo, por-
tanto, modelos de representação distintos.
Maiores informações sobre o Modelo ER podem ser encontradas em https://goo.gl/oOIpX3
A figura 2 mostra uma visão minimalista do mapeamento de objetos para o modelo 
relacional. Apesar dos diversos conceitos existentes em ambos os modelos, a ênfase está 
no mapeamento de classes e atributos para tabelas e colunas.
9
UNIDADE 
Mapeamento Objeto-Relacional e Camada de Persistência
Figura 2 – Visão minimalista do mapeamento de objetos para o modelo relacional
Fonte: Machado, 2014 p.233
Vamos agora mapear os objetos a partir do modelo de classes do projeto de sistema 
de software de locadora de carros abordado nas unidades anteriores?
Antes, para facilitar o entendimento, é interessante definir a forma de notação para 
representar o procedimento de mapeamento, sendo que não há uma notação universal 
para tal. O mapeamento deste material adotou as seguintes notações:
• cada relação (tabela) será representada pelo seu nome em negrito e suas colunas 
(campos) entre parênteses;
• a chave primária (primary key – PK) será representada em negrito;
• a chave estrangeira (foreign key – FK) será representada em itálico.
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.
Para realizar o procedimento de mapeamento dos objetos a partir das classes do 
projeto de sistema de software de locadora de carros, vamo s utilizar como base o dia-
grama de classes de projeto apresentado na figura 3. Observe que o referido diagrama 
de classes apresenta somente classes que representam objetos persistentes, os quais o 
mapeamento tem interesse de mapear para tabelas do banco de dados relacional. Ob-
serve também que o escopo de classes foi ampliado, permitindo assim a aplicação de 
mais regras de mapeamento envolvendo classes, atributos e relacionamentos.
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
11
Figura 3 – Diagrama de classes de projeto
Font e: Elaborado pelo autor
As regras de mapeamento aplicadas no diagrama de classes do projeto de sistema 
de software de locadora de automóveis foram baseadas nos livros de Bezerra (2015), 
Machado (2014) e Waslawick (2015). É importante ressaltar que nem todas as regras 
de mapeamento apresentadas pelos referidos livros foram aplicadas nesta unidade, mas 
somente as regras necessárias para mapear o diagrama de classes de projeto da figura 
3. Tam bém é importante enfatizar que as regras de mapeamento não são rígidas, po-
dendo variar para cada situação. Isso significa que você pode encontrar diferenças no 
procedimento de mapeamento.
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.
Figu ra 4 – Classes relacionadas por meio de associação um-para-muitos
Fonte: Elaborado pelo autor
O resultado do mapeamento do diagrama de classes da figura 4 é apresentado no 
quadro 1. Note que cada classe foi mapeada para uma tabela e cada atributo para uma 
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.
Quadro 1 – Mapeamento das classes relacionadas por meio de associação um-para-muitos
Locacao (idLocacao, dataretirada, horaretirada, datadevolucao, horadevolucao, 
valorlocacao, idCliente, idCarro)
Cliente (idCliente, cpf, nome, email, data_nasc)
Carro (idCarro, modelo, chassi, cor, km, valordiaria)
Fonte: Elaborado pelo autor
O próximo mapeamento a ser realizado é o das classes relacionadas por meio de 
associações com conectividade muitos-para-muitos com classe associativa, também cha-
mada de classe de associação. A figura 5 mostra as classes selecionadas para este ma-
peamento. Ao realizar o mapeamento de uma relação com conectividade muitos-para-
-muitos com classe associativa, é importante notar que a classe associativa tem atributos 
associados às classes Carro e Acessório. Por exemplo, um carro pode ser locado com 
duas cadeiras de bebê e que essas cadeiras também podem ser acessórios para outros 
carros alugados, sendo necessário saber quantos itens de acessório foram contratados e 
o valor para cada um desses itens.
Figura 5 – Classes relacionadas por meio de associação muitos-para-muitos com classe associativa
F onte: Elaborado pelo autor
O resultado do mapeamento do diagrama de classes da figura 5 é apresentado no 
quadro 2. Note que cada classe foi mapeada para uma tabela e cada atributo para uma 
coluna. A classe associativa ItemAcessorio também foi mapeada para uma tabela, onde 
as colunas idCarro e idAcessorio formam uma chave primária composta e que também 
são chaves estrangeiras, fazendo referência às classes Carro e Acessório, respectivamente.
12
13
Quadro 2 – Mapeamento das classesrelacionadas por meio de 
associação muitos-para-muitos com classe associativa
Carro (idCarro, modelo, chassi, cor, km, valordiaria)
Acessorio (idAcessorio, descricao, valor)
ItemAcessorio (idCarro, idAcessorio, qtdeitem, valoritem)
Fonte: Elaborado pelo autor
O próximo mapeamento a ser realizado é o das classes relacionadas por meio de 
composição. A figura 6 mostra as classes selecionadas para este mapeamento. Vale 
lembrar que o relacionamento de composição representa uma relação todo-parte. O ma-
peamento dos relacionamentos de composição pode ser o mesmo adotado nos relacio-
namentos de associação, inclusive as conectividades. A diferença está na forma de como 
o banco de dados deve se comportar quando um registro da tabela correspondente ao 
todo deve ser excluído ou atualizado, ou seja, quando um objeto todo é excluído ou atu-
alizado, é natural excluir ou atualizar os objetos parte também.
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.
 Figura 6 – Classes relacionadas por meio de composição
Fonte: Elaborado pelo autor
O resultado do mapeamento do diagrama de classes da figura 6 é apresentado no 
quadro 3. Note que cada classe foi mapeada para uma tabela e cada atributo para uma 
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.
Quadro 3 – Mapeamento das classes relacionadas por meio de composição
Carro (idCarro, modelo, chassi, cor, km, valordiaria)
Motor (idCarro, idMotor, torque, potencia, cavalos)
Roda (idCarro, idRoda, modelo, aro)
Fonte: Elaborado pelo autor
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.
 Figura 7 – Classes relacionadas por meio de generalização
Fonte: Elaborado pelo autor
O resultado do mapeamento do diagrama de classes da figura 7 é apresentado no 
quadro 4. Note que a superclasse e cada subclasse foram mapeadas para tabelas distintas 
e cada atributo para uma coluna. Para refletir melhor o modelo de objetos, evitar pos-
síveis valores nulos e facilitar a manutenibilidade, foi escolhida a alternativa de mapear 
14
15
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.
Quadro 4 – Mapeamento das classes relacionadas por meio de generalização
Carro (idCarro, modelo, chassi, cor, km, valordiaria)
Passeio (idCarroP, qtdelugares, idCarro)
Utilitário (idCarroU, capacidadecarga, idCarro)
Fonte: Elaborado pelo autor
Existem ferramentas que automatizam o mapeamento para a criação do banco de dados 
relacional a partir do modelo de classes. Mesmo assim, essas ferramentas não resolvem 
totalmente o problema do impedance mismatch. Além disso, nem sempre há uma ferra-
menta disponível e mesmo que haja, é importante o desenvolvedor de software ter conhe-
cimento, mesmo que básico, dos procedimentos de mapeamento.
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 propósito de uma camada de persistência é isolar os objetos de negócio de um 
sistema de software dos detalhes de comunicação com o banco de dados. Havendo 
necessidade de alterações no esquema do banco de dados, os objetos da camada de 
negócio permanecem intactos. Se um banco de dados diferente tiver que ser utilizado 
pelo sistema de software, apenas a camada de persistência é modificada. Em síntese, a 
criação de uma camada de persistência diminui o acoplamento (dependência) entre os 
objetos de negócio da aplicação e a estrutura do banco de dados, tornando o sistema de 
software mais manutenível e portável (BEZERRA, 2015).
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. 
Nessa estratégia, um sistema de software orientado a objetos obtém acesso a objetos 
de negócio através de uma interface, denominada interface DAO. As classes que imple-
mentam essa interface transformam informações provenientes do mecanismo de arma-
zenamento em objetos de negócio e vice-versa. Nesse caso, o sistema de software se co-
munica com o objeto DAO através de uma interface, sendo que a implementação desse 
objeto não faz diferença para a aplicação, já que o objeto DAO isola completamente os 
15
UNIDADE 
Mapeamento Objeto-Relacional e Camada de Persistência
objetos consumidores da aplicação dos mecanismos de armazenamento físico de dados. 
(BEZERRA, 2015)
A figura 8 mostra a estrutura do padrão de projeto para persistência de Dados DAO. 
Observe alguns aspectos interessantes nessa figura: a RegiãoCliente representa o con-
junto de objetos consumidores que se comunica com o objeto DAO através da interface; 
a classe DAO está encapsulada por trás da interface; a classe DAO precisa conhecer a 
estrutura da ClasseEntidade para poder restaurar, atualizar ou excluir o objeto modelo 
em questão; a fonte de dados está sendo acessada e manipulada por meio da classe 
DAO. Em suma, os objetos de negócio da aplicação estão isolados do banco de dados 
utilizado pela aplicação, devido à construção de uma camada de persistência de dados.
 Figura 8 – Estrutura do padrão DAO
Fonte: Bezerra, 2015 p. 384
Maiores informações sobre o padrão de projeto DAO podem ser encontradas em 
https://goo.gl/fLWfR5 e em https://goo.gl/8JWF
Para facilitar a compreensão da representação da camada de persistência de dados, o 
diagrama de pacotes da figura 9 exibe um subsistema (pacote) DAO com as classes DAO 
alocadas nele. Para cada classe que representa um objeto de negócio (objeto modelo) do 
projeto de sistema de software de locadora de carros, foi criada uma classe DAO. Essa 
figura representa o subsistema DAO em uma arquitetura lógica.
Figura 9 – Subsistema (Pacote) DAO
Fonte: Elaborado pelo autor
16
17
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, isolandoos componentes da aplicação onde se en-
contram os objetos de negócio do Sistema Gerenciador de Banco de Dados (SGBDR).
Figura 10 – Diagrama de implantação com alocação do componente de persistência
Fonte: Elaborado pelo autor
Na plataforma Java, há um framework para mapeamento objeto-relacional chamado 
Hibernate. Na plataforma Microsoft, esse framework se chama NHibernate. Maiores infor-
mações sobre o framework Hibernate podem ser encontradas em https://goo.gl/aHFndK e 
em https://goo.gl/1zbDsG
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
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
19
Referências
BEZERRA, E. Princípios de Análise e Projeto de Sistemas com UML. 3. ed. São 
Paulo: Elsevier, 2015.
MACHADO, F. N. R. Banco de dados: projeto e implementação. 3. ed. São Paulo: 
Érica, 2014.
SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson, 2011.
WASLAWICK, R. S.; Análise e design orientados a objetos para sistemas de 
informação: modelagem com UML, OCL e IFML. 3. ed. Rio de Janeiro: Campus 
Elsevier, 2015. 
19

Mais conteúdos dessa disciplina