Hibernate - Visão geral do ORM
O que é JDBC?
JDBC significa Java Database Connectivity. Ele fornece um conjunto de API Java para acessar os bancos de dados relacionais do programa Java. Essas APIs Java permitem que programas Java executem instruções SQL e interajam com qualquer banco de dados compatível com SQL.
JDBC fornece uma arquitetura flexível para escrever um aplicativo independente de banco de dados que pode ser executado em diferentes plataformas e interagir com diferentes DBMS sem qualquer modificação.
Prós e Contras do JDBC
Profissionais de JDBC | Contras do JDBC |
---|---|
Processamento SQL limpo e simples Bom desempenho com grande volume de dados Muito bom para pequenas aplicações Sintaxe simples tão fácil de aprender |
Complexo se for usado em grandes projetos Grande sobrecarga de programação Sem encapsulamento Difícil de implementar o conceito MVC A consulta é específica do DBMS |
Por que Mapeamento Relacional de Objeto (ORM)?
Quando trabalhamos com um sistema orientado a objetos, há uma incompatibilidade entre o modelo de objeto e o banco de dados relacional. Os RDBMSs representam dados em um formato tabular, enquanto as linguagens orientadas a objetos, como Java ou C #, os representam como um gráfico interconectado de objetos.
Considere a seguinte classe Java com construtores adequados e função pública associada -
public class Employee {
private int id;
private String first_name;
private String last_name;
private int salary;
public Employee() {}
public Employee(String fname, String lname, int salary) {
this.first_name = fname;
this.last_name = lname;
this.salary = salary;
}
public int getId() {
return id;
}
public String getFirstName() {
return first_name;
}
public String getLastName() {
return last_name;
}
public int getSalary() {
return salary;
}
}
Considere que os objetos acima devem ser armazenados e recuperados na seguinte tabela RDBMS -
create table EMPLOYEE (
id INT NOT NULL auto_increment,
first_name VARCHAR(20) default NULL,
last_name VARCHAR(20) default NULL,
salary INT default NULL,
PRIMARY KEY (id)
);
Primeiro problema, e se precisarmos modificar o design de nosso banco de dados depois de desenvolver algumas páginas ou nosso aplicativo? Em segundo lugar, carregar e armazenar objetos em um banco de dados relacional nos expõe aos cinco problemas de incompatibilidade a seguir -
Sr. Não. | Incompatibilidade e descrição |
---|---|
1 | Granularity Às vezes, você terá um modelo de objeto, que possui mais classes do que o número de tabelas correspondentes no banco de dados. |
2 | Inheritance RDBMSs não definem nada semelhante a Herança, que é um paradigma natural em linguagens de programação orientadas a objetos. |
3 | Identity Um RDBMS define exatamente uma noção de 'igualdade': a chave primária. Java, entretanto, define a identidade do objeto (a == b) e a igualdade do objeto (a.equals (b)). |
4 | Associations Linguagens orientadas a objetos representam associações usando referências de objetos, enquanto um RDBMS representa uma associação como uma coluna de chave estrangeira. |
5 | Navigation As maneiras de acessar objetos em Java e em RDBMS são fundamentalmente diferentes. |
o Object-Relacional Mapping (ORM) é a solução para lidar com todas as incompatibilidades de impedância acima.
O que é ORM?
ORM significa Object-Relacional Mapping (ORM) é uma técnica de programação para converter dados entre bancos de dados relacionais e linguagens de programação orientadas a objetos, como Java, C #, etc.
Um sistema ORM tem as seguintes vantagens sobre JDBC simples -
Sr. Não. | Vantagens |
---|---|
1 | Vamos acessar objetos de código de negócios em vez de tabelas de banco de dados. |
2 | Oculta detalhes de consultas SQL da lógica OO. |
3 | Baseado em JDBC 'sob o capô'. |
4 | Não há necessidade de lidar com a implementação do banco de dados. |
5 | Entidades baseadas em conceitos de negócios em vez de estrutura de banco de dados. |
6 | Gerenciamento de transações e geração automática de chaves. |
7 | Desenvolvimento rápido de aplicação. |
Uma solução ORM consiste nas seguintes quatro entidades -
Sr. Não. | Soluções |
---|---|
1 | Uma API para realizar operações CRUD básicas em objetos de classes persistentes. |
2 | Uma linguagem ou API para especificar consultas que se referem a classes e propriedades de classes. |
3 | Um recurso configurável para especificar metadados de mapeamento. |
4 | Uma técnica para interagir com objetos transacionais para realizar verificação suja, busca lenta de associação e outras funções de otimização. |
Frameworks Java ORM
Existem várias estruturas persistentes e opções de ORM em Java. Uma estrutura persistente é um serviço ORM que armazena e recupera objetos em um banco de dados relacional.
- Enterprise JavaBeans Entity Beans
- Objetos de Dados Java
- Castor
- TopLink
- Spring DAO
- Hibernate
- E muitos mais