Ir para conteúdo
Fórum Script Brasil
  • 0

tutorial Hibernate


???

Pergunta

Antes de começar lembre-se todos os arquivos são no mesmo pacote, e vai presisar do jar do hibernate que tem no site www.hibernate.org para funcionar a aplicação.

Obs: exemplo foi testado no MYSQL.

Para criar uma aplicação com hibernate primeiramente crie uma classe para a persistencia

public class Pessoa {

private String nome;

private String email;

private String telefone;

private Endereco endereco;

private Integer id;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public Endereco getEndereco() {

return endereco;

}

public void setEndereco(Endereco endereço) {

this.endereco = endereço;

}

public String getNome() {

return nome;

}

public void setNome(String nome) {

this.nome = nome;

}

public String getTelefone() {

return telefone;

}

public void setTelefone(String telefone) {

this.telefone = telefone;

}

}

classe para configurar o hibernate:

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

public class HibernateUtility {

private static SessionFactory factory;

static {

//Bloco estático que inicializa o Hibernate

try {

factory = new Configuration().configure().buildSessionFactory();

} catch (Exception e) {

e.printStackTrace();

factory = null;

}

}

public static Session getSession() {

return factory.openSession();

}

}

crie o arquivo

"Pessoa.hbm.xml"

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping

PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

<class name="Pessoa">

<!-- Identificador da classe -->

<id name="id">

<generator class="increment"/>

</id>

<!-- Propriedades da classe -->

<property name="nome"/>

crie o arquivo:

"Hibernate.cfg.xml"

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<property

name="hibernate.dialect">

org.hibernate.dialect.MySQLDialect

</property>

<property

name="hibernate.connection.driver_class">

com.mysql.jdbc.Driver

</property>

<property

name="hibernate.connection.url">

jdbc:mysql://localhost/hibernate?autoReconnect=true

</property>

<property

name="hibernate.connection.username">

root

</property>

<property

name="hibernate.connection.password">

</property>

<!-- Condiguração do c3p0 -->

<property name="hibernate.c3p0.max_size">10</property>

<property name="hibernate.c3p0.min_size">2</property>

<property name="hibernate.c3p0.timeout">5000</property>

<property name="hibernate.c3p0.max_statements">10</property>

<property name="hibernate.c3p0.idle_test_period">3000</property>

<property name="hibernate.c3p0.acquire_increment">2</property>

<!-- Configurações de debug -->

<property name="show_sql">true</property>

<property name="use_outer_join">true</property>

<property name="hibernate.generate_statistics">true</property>

<property name="hibernate.use_sql_comments">true</property>

<mapping resource="Pessoa.hbm.xml"/>

</session-factory>

</hibernate-configuration>

<property name="telefone"/>

<property name="email"/>

<!-- Relacionamento da classe -->

<one-to-one

name="endereco"

class="Endereco"

cascade="save-update"/>

</class>

</hibernate-mapping>

crie o arquivo:

"log4j.properties"

### direct log messages to stdout ###

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target=System.out

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}\:%L - %m%n

### direct messages to file hibernate.log ###

log4j.appender.file=org.apache.log4j.FileAppender

log4j.appender.file.File=hibernate.log

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}\:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=warn, stdout, file

#log4j.logger.org.hibernate=info

log4j.logger.org.hibernate=debug

### log just the SQL

#log4j.logger.org.hibernate.SQL=debug

### log JDBC bind parameters ###

log4j.logger.org.hibernate.type=info

#log4j.logger.org.hibernate.type=debug

### log schema export/update ###

log4j.logger.org.hibernate.tool.hbm2ddl=debug

### log HQL parse trees

#log4j.logger.org.hibernate.hql=debug

### log cache activity ###

#log4j.logger.org.hibernate.cache=debug

### log JDBC resource acquisition

#log4j.logger.org.hibernate.jdbc=debug

### enable the following line if you want to track down connection ###

### leakages when using DriverManagerConnectionProvider ###

#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

crie no banco de dados :

CREATE TABLE Pessoa (

id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

nome VARCHAR(255) NULL,

email VARCHAR(255) NULL,

telefone VARCHAR(255) NULL,

PRIMARY KEY(id)

)

Agora teste a aplicação com esta classe

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

import org.hibernate.Transaction;

public class Teste {

public static void main(String[] args) {

Session sessao = HibernateUtility.getSession(); //Abrindo uma sessão

Transaction transaction = sessao.beginTransaction(); //Iniciando uma transação´

Pessoa p=new Pessoa();

p.setNome("nome teste");

p.setEndereco("endereco teste");

sessao.save(p); //Transformando o objeto transiente em um objeto

//persistente no banco de dados

transaction.commit(); //Finalizando a transação

System.out.println("Persistencia"+sessao.isConnected());

sessao.close(); //Fechando a sessão

}

}

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...