Escolar Documentos
Profissional Documentos
Cultura Documentos
Hibernate
Persistncia automtica e transparente de objetos de um aplicativo Java para tabelas em um banco de dados relacional, utilizando metadados que descrevem o mapeamento entre os objetos e o banco de dados. Em essncia, transforma dados de uma representao para a outra. Hibernate in Action
Hibernate: Mdulos
Hibernate Core
Contm os servios bsicos
Metadados escritos em XML
Consultas
HQL: Hibernate Query Language Interfaces utilizando critrios e exemplos
Hibernate: Mdulos
Hibernate Core
No depende de outros mdulos
No depende de uma verso especfica do
JDK
Executvel em qualquer servidor Web e/ou de Aplicao e tambm em aplicaes desktop
Mdulos
Hibernate Annotations
Permite a escrita de metadados atravs de
Annotations Beneficia-se da tipagem do Java Compatvel com refatoraes de cdigo Semntica familiar para quem j est acostumado com metadados em XML
Mdulos
Hibernate Annotations
Utiliza as Annotations da especificao JPA
Possui Annotations prprias para
Mdulos
Mdulos
Metadados
entre
Classes e tabelas Propriedades e colunas Associaes e chaves estrangeiras Tipos de atributos Java e tipos de atributos SQL
Metadados
Java Annotations
XML
<hibernate-mapping> <class name=entidade.Empresa" table=empresa"> <id name="id" column="id"> <generator class="increment" /> </id> <!-- Propriedades da classe --> <property name="nome" column=nome"/> <one-to-one name = endereco" class = entidade.Endereco /> <set name =programadores> <key column = programadores_id/> <one-to-many class=entidade.Programador> </set> </class> </hibernate-mapping>
No mais flexvel e nem mais fcil de manter do que cdigo Java Mais fcil encontrar um bom editor Java do que um bom editor de XML
Xdoclet
/** * @hibernate.class table="TB_GLB_ISP_PROD_COMPCA RAC_XREF" */ public class CotaCaracteristicaComponente extends BusinessObject { private CotaCaracteristicaComponentePK id; private String cota; /** * @hibernate.id } public void setCota(String cota) { this.cota = cota; } } } /** * @hibernate.property column="VALOR_TXT" */ public String getCota() { return cota; } public void setId(CotaCaracteristicaComponenteP K id) { this.id = id;
*/
public CotaCaracteristicaComponentePK getId() { return id;
A meta-informao fica perto dos dados que ela descreve Compatvel com refatorao de cdigo
Renomear, deletar e remover classes e propriedades
Mapeando Propriedades
Ao mapear uma classe atravs da Annotation @Entity, todas as propriedades sero consideradas persistentes Propriedades no persistentes devem receber a Annotation @Transient ou o modificador transient Por default, o nome da coluna ser o mesmo da propriedade
@Column
Aplicvel para propriedades simples Atributos
name
Nome da coluna a qual o mtdo mapeado
unique
Se o valor deve ser nico ou no
nullable
Se a atributo pode ser nulo ou no
Datas
Propriedades podem ser do tipo java.util.Date ou java.util.Calendar Preciso default TIMESTAMP Preciso pode ser alterada atravs da Annotation @Temporal
@Temporal(TemporalType.DATE) private Date date1; @Temporal(TemporalType.TIME) private Date date2; @Temporal(TemporalType.TIMESTAMP) private Date date3;
Adicionando um Identificador
O valor gerado automaticamente pelo Hibernate No deve ser mudado pela aplicao
@Entity @Table(name="CATEGORY") public class Category { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "CATEGORY_ID") private Long id; public Long getId() { return id; } }
Tambm so implementadas atravs de atributos Para associaes one-to-many e many-tomany necessrio a utilizao de colees
Tambm so implementadas atravs de atributos Para associaes one-to-many e many-to-many necessrio a utilizao de colees
One to one
Modelo de relacionamento
Um para um
Classe Professor
Classes
Professor Disciplina
Classe Disciplina
One to many
Modelo de relacionamento
Um para muitos
Classe Aluno
Opcional
Classes
Disciplina
Aluno
Classe Disciplina
Projeto
Projeto - Descrio
Empresa
Endereo
Projeto - Descrio
Listar()
getEntidade()