JPA - ORM Componentes


Advertisements

Mais modernos aplicativos usam banco de dados relacional para armazenar dados. Recentemente, muitos fornecedores ligados ao objeto database para reduzir sua carga de dados manORMnção. O que significa objeto objeto-relacional banco de dados ou tecnologias estão tendo o cuidado de armazenar, recuperar, a atualização e manORMnção de dados. A parte central da tecnologia objeto-relacional é o mapeamento orm.arquivos xml. Como xml não requer compilação, podemos facilmente fazer alterações de múltiplas fontes de dados com menos com a administração.

Mapeamento objeto-relacional

Object Relational Mapping (ORM) informa resumidamente sobre o que é ORM e como ela funciona. ORM é uma capacidade de programação para converter os dados de tipo de objeto relacional para tipo e vice-versa.

A característica principal do mapeamento ORM é obrigatório ou um objeto para seus dados no banco de dados. Durante o mapeamento, temos de ter em consideração os dados, o tipo de dados, e as suas relações com a entidade ou entidades de qualquer outra tabela.

Recursos avançados

  • Idiomática persistência: ele permite que você escreva a persistência classes usando orientação a objetos classes.

  • Alto desempenho: ele tem muitos buscando técnicas e esperançoso o trancamento das técnicas.

  • Confiável: ele é altamente estável e utilizado por muitos programadores profissionais.

Arquitetura ORM

A ORM arquitetura tem o seguinte aspecto.

Object_Relational_Mapping

A arquitetura acima explica como objeto os dados são armazenados em banco de dados relacional em três fases.

Fase1

A primeira fase, denominada fase os dados de objeto EM POJO, contém as classes, interfaces de serviço e classes. Trata-se do principal órgão negócios camada, que tem lógica de negócios operações e atributos.

Por exemplo, vamos ter um banco de dados de funcionários no esquema.

  • Empregado em POJO classe contém atributos como ID, nome, salário e designação. Ele também contém métodos como setter e getter de esses atributos.

  • Funcionário DAO/classes de serviço contêm métodos de serviço, tais como criar funcionário, encontrar funcionários e excluir funcionário.

Fase 2

A segunda fase, denominada fase mapeamento ou de persistência, contém JPA provider, arquivo de mapeamento (ORM.xml), JPA Loader e grelha do objecto.

  • JPA Provider: é o fornecedor produto que contém a JPA sabor javax.persistence). Por exemplo Eclipselink, Toplink E Hibernate, etc.

  • Arquivo de Mapeamento : o arquivo de mapeamento (ORM.xml) contém configuração de mapeamento entre os dados de um POJO EM classe e os dados em um banco de dados relacional.

  • JPA Loader: o JPA loader funciona como uma memória cache. Ele pode carregar o relacional dados da grade. Ela funciona como uma cópia do banco de dados para interagir com as classes de serviço para dados EM POJO POJO EM (atributos de classe).

  • Objeto Grid: é um local temporário que pode armazenar uma cópia de dados relacionais, como a memória cache. Todas as consultas ao banco é a primeira realizada sobre os dados no objeto grid. Somente depois que ele é comprometido, ela afeta o banco de dados principal.

Fase 3

A terceira fase é a fase dados relacional. Ele contém os dados relacionais que é logicamente ligado ao componente comercial. Como discutido acima, somente quando a componente empresarial compromete os dados, ele é armazenado na base de dados fisicamente. Até então, os dados modificados é armazenado em uma memória cache como um formato de grade. O processo de obtenção dos dados é idêntico ao de armazenar os dados.

O mecanismo de interação de programático acima de três fases é chamado de mapeamento objeto-relacional.

Mapeamento.xml

O mapeamento.arquivo xml é para instruir o JPA fornecedor para mapear as classes de entidades com as tabelas do banco de dados.

Deixe-nos tomar um exemplo de funcionário entidade que contém quatro atributos. A classe POJO em entidade de funcionários nomeados Employee.java é a seguinte:

public class Employee 
{
   private int eid;
   private String ename;
   private double salary;
   private String deg;
   public Employee(int eid, String ename, double salary, String deg) 
   {
      super( );
      this.eid = eid;
      this.ename = ename;
      this.salary = salary;
      this.deg = deg;
   }

   public Employee( ) 
   {
      super();
   }

   public int getEid( ) 
   {
      return eid;
   }
   public void setEid(int eid)  
   {
      this.eid = eid;
   }
   public String getEname( ) 
   {
      return ename;
   }
   public void setEname(String ename) 
   {
      this.ename = ename;
   }

   public double getSalary( ) 
   {
      return salary;
   }
   public void setSalary(double salary) 
   {
      this.salary = salary;
   }

   public String getDeg( ) 
   {
      return deg;
   }
   public void setDeg(String deg) 
   {
      this.deg = deg;
   }
}

O código acima é a entidade dos funcionários POJO EM classe. Ele contém quatro atributos eid, ename, salário e deg. Considere esses atributos como os campos da tabela em uma tabela e eid como a chave primária da tabela. Agora, temos de design arquivo de mapeamento do hibernate para ela. O arquivo de mapeamento chamado mapeamento.xml é a seguinte:

<? xml version="1.0" encoding="UTF-8" ?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm    
                        http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
                        version="1.0">
    <description> XML Mapping file</description>
    <entity class="Employee">        
        <table name="EMPLOYEETABLE"/>
        <attributes>
            <id name="eid">
                <generated-value strategy="TABLE"/>
            </id>
            <basic name="ename">
                <column name="EMP_NAME" length="100"/>
            </basic>
            <basic name="salary">
            </basic>
            <basic name="deg">
            </basic>
        </attributes>
    </entity>
</entity-mappings>

O script acima é utilizado para mapear as classes de entidades com a tabela do banco de dados. Neste arquivo

  • <entity-mappings>: tag define definição do esquema para permitir entidade tags no arquivo xml.

  • <description> tag fornece uma descrição sobre a aplicação.

  • <entity>: tag define a classe de entidades que você deseja converter em tabela em um banco de dados. Classe de atributo define o nome da classe entidade EM POJO.

  • <table>: tag define o nome da tabela. Se você deseja ter nomes idênticos tanto para a classe, bem como a tabela e, em seguida, esta tag não é necessário.

  • <attributes>: tag define os atributos (campos em uma tabela).

  • <id>: tag define a chave primária da tabela. O<generated-value>tag define como para atribuir o valor da chave primária como Automático, Manual, ou tomado na sequência.

  • <basic> : tag é usado para definir os demais atributos da tabela.

  • <column-name>: tag é usado para definir tabela definida pelo usuário nomes dos campos na tabela.

As anotações

Geralmente os arquivos xml são usados para configurar os componentes específicos, ou mapeamento de duas diferentes especificações de componentes. No nosso caso, temos de manter arquivos xml separadamente em um quadro. Isso significa que, enquanto a elaboração de um mapeamento arquivo xml, é preciso comparar a classe POJO EM atributos com marcadores de entidade no mapeamento.xml file.

Aqui está a solução. A definição de classe, podemos escrever a parte configuração utilizando anotações. As anotações são utilizadas para as classes, propriedades e métodos. As anotações iniciar com símbolo ' @ '. As anotações são declarados antes de uma classe, a propriedade ou método. Todas as anotações do JPA são definidos no javax.microedition.media persistência pacote.

Aqui lista de anotações usado nos nossos exemplos abaixo.

Anotação Descrição
@Entity Declara a classe como uma entidade ou uma tabela.
@Table Declara nome da tabela.
@Basic Especifica os campos não-restrição explícita.
@Embedded Especifica as propriedades de classe ou de uma entidade cujo valor é uma instância de uma classe incorporável.
@Id Especifica a propriedade, o uso de uma identidade (chave primária de uma tabela) da classe.
@GeneratedValue Identidade Especifica como o atributo pode ser inicializado como automático, manual, ou o valor de uma seqüência.
@Transient Especifica a propriedade que não é persistente, ou seja, o valor nunca é armazenada no banco de dados.
@Coluna Especifica o atributo de coluna para a persistência.
@SequenceGenerator Especifica o valor da propriedade que é especificado no @GeneratedValue anotação. Ele cria uma seqüência.
@TableGenerator Especifica o valor gerador da propriedade especificada no @GeneratedValue anotação. Ele cria uma tabela para geração de valor.
@AccessType) Este tipo de comentário é usado para definir o tipo de acesso. Se você definir @AccessType(CAMPO), então o acesso ocorre Domínio sábio. Se você definir @AccessType (PROPRIEDADE), então o acesso ocorre imóvel sábio.
@JoinColumn Especifica uma entidade associação ou entidade coleção. Isso é usado em muitos - para um e um para muitas associações.
@UniqueConstraint Especifica os campos e as únicas restrições para o primário ou o secundário.
@ColumnResult As referências ao nome de uma coluna da consulta SQL utilizando cláusula select.
@ManyToMany Define um relacionamento muitos-para-muitos entre a juntar tabelas.
@ManyToOne Define um muitos-para-um relacionamento entre a juntar tabelas.
@OneToMany Define um relacionamento um-para-muitos entre a juntar tabelas.
@OneToOne Define uma relação de um para um entre o juntar tabelas.
@NamedQueries Especifica uma lista de consultas nomeadas.
@NamedQuery Especifica uma consulta usando nome estático.

Padrão Java Bean

A classe Java encapsula o exemplo e os seus comportamentos em uma única unidade chamada objeto. Java Bean é um armazenamento temporário e componentes reutilizáveis ou um objeto. É a serializable classe que tem um construtor padrão e getter e setter métodos para inicializar os atributos de instância individualmente.

Bean Convenções

  • Bean contém seu construtor padrão ou um arquivo que contém serializado exemplo. Portanto, um bean pode instanciar um outro bean.

  • As propriedades de um bean pode ser segregados em propriedades booleanas ou não-Booleano propriedades.

  • Non-Boolean propriedade contém getter e settermétodos.

  • Propriedade Booleana contêm levantador e é um método.

  • Método Getter de qualquer propriedade deve começar com pequenas letras (método java convenção) e prosseguiu com um nome de campo que começa com letra maiúscula. Por exemplo, o nome do campo é salário, pois o método getter de este campo é getSalary ( ).

  • Método Setter de qualquer propriedade deve começar com pequenas letras set (método java convenção), continuou com o nome do campo que começa com letra maiúscula e o valor do argumento para definir a matéria. Por exemplo, o nome do campo é salário, pois o método setter deste campo é setSalary ( dupla sal ).

  • Para propriedade booleana, é um método para verificar se ela é verdadeira ou falsa. Por exemplo, a propriedade boleana vazia, é método de este campo é isEmpty ( ).

Advertisements