Gerar tabelas

19 respostas
E

Ola pessoal! Estou começado a mexer com o hibernate e estou tendo problemas ao gerar uma tebela
segue o meus codigos

import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import org.hibernate.annotations.Entity;

@Entity
public class Cliente {
	@Id
	@GeneratedValue
	private Integer id;
	private String nome;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

}
import org.hibernate.Session;

public class Conecta {
	public static void main(String[] args) {
		Session sessao = null;
		try {
			sessao = HibernateUtil.getSession().openSession();
			System.out.println("conectou");
		} finally  {
			System.out.println("fechou conexao");
		}
	}
}
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
	private static final SessionFactory session = buildSessionFactory();

	private static SessionFactory buildSessionFactory() {
		try {
			Configuration cfg = new Configuration();
			cfg.configure("hibernate.cfg.xml");
			return cfg.buildSessionFactory();
		} catch (Throwable e) {
			// TODO: handle exception
			System.out.println("erro\n" + e);
			throw new ExceptionInInitializerError();
		}
	}

	public static SessionFactory getSession() {
		return session;
	}
}
<?xml version="1.0" encoding="UTF-8"?>
<!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.connection.driver_class">org.gjt.mm.mysql.Driver</property>
  <property name="hibernate.connection.password">root</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost/sistema</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="hibernate.hbm2ddl.auto">update</property>
  <mapping class="Cliente"/>
 </session-factory>
</hibernate-configuration>

19 Respostas

E

Quando eu vou no mysql e dou show tables; nao aparece nenhuma tabela.

Hebert_Coelho

E não aparece nenhuma mensagem de erro?
Não aparece nada no console?

marcelo.silva.java

Faltou isso…

E

Hebert Coelho no console do eclipse aparece

log4j:WARN No appenders could be found for logger (org.hibernate.type.BasicTypeRegistry).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

conectou
fechou conexao.

marcelo.silva.java eu colquei

essa linha awe e nao deu certo

marcelo.silva.java

cara se vc tiver usando o eclipse…verifique se o jar log4j está em seu classPath…

se não baixe…e adicione em seu classPath…

falow…

R
<property name="hibernate.hbm2ddl.auto">update</property>

nao seria auto ? voce ta colocando como update, logo, pelo que eu entendo, ele so atualizara o que existe. Bota auto e faz o teste. (Se for BD da empresa por favor sempre tenha 1 backup).

<property name="hibernate.hbm2ddl.auto">auto</property>

eu quando vou criar a tabela pela primeira vez eu coloco “create”, depois retiro ou comento essa linha, já que nao irei precisar mais.

E

“”

R
marcelo.silva.java
<property name="hibernate.connection.username">
      root
    </property>
    <property name="hibernate.connection.password">
    </property>
    <property name="hibernate.connection.url">
      jdbc:mysql://localhost/fj28
    </property>
    <property name="hibernate.connection.driver_class">
      com.mysql.jdbc.Driver
    </property>
    <property name="hibernate.dialect">
      org.hibernate.dialect.MySQL5InnoDBDialect
    </property>
    
    <property name="hibernate.hbm2ddl.auto">update</property>
    
    <property name="show_sql">true</property>
    <property name="format_sql">true</property
E

nao ta funcinando

mysql> use sistema;

Database changed

mysql> show tables;

Empty set (0.00 sec)
R

voce fez o que eu falei ? eu uso assim direto e funciona ‘-’

marcelo.silva.java

cara vc usou isso

e não foi???

R

Mas isso ai so serve pra mostrar o comando SQL no console, o que ele ta querendo parece que é criar um database a partir do hibernate.

R

repetindo a ultima vez mano

<property name="hibernate.hbm2ddl.auto">auto</property>

coloca auto ou create… vai por mim, essa linha ae que é responsavel por executar a ação de criar database

marcelo.silva.java

Uma das vantagens de se utilizar o Hibernate é que ele é capaz de gerar as tabelas do banco para
a nossa aplicação. Ele faz isso de acordo com as anotações colocadas nas classes e as informações
presentes no persistence.xml.
As tabelas são geradas através de um método da classe Persistence, o createEntityManager-
Factory(String entityUnit). O parâmetro entityUnit permite escolher, pelo nome, uma uni-
dade de persistência definida no persistence.xml.
A política de criação das tabelas pode ser alterada modificando o valor a propriedade hiberna-
te.hbm2ddl.auto no arquivo persistence.xml. Podemos, por exemplo, fazer com que o Hibernate
sempre sobrescreva as tabelas existentes, bastando definir a propriedade hibernate.hbm2ddl.auto
com o valor create-drop.

< property name = " hibernate . hbm2ddl . auto " value = " create - drop " / >

Uma outra opção é configurar o Hibernate para simplesmente atualizar as tabelas de acordo
com as mudanças nas anotações sem removê-las. Nesse caso, o valor da propriedade hiberna-
te.hbm2ddl.auto deve ser update.

< property name = " hibernate . hbm2ddl . auto " value = " update " / >

E
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory name="sistema">
  <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
  <property name="hibernate.connection.password">root</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost/sistema</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="hibernate.show_sql">true</property>
  <property name="hibernate.hbm2ddl.auto">update</property>
  <mapping class="Cliente"/>
  
 </session-factory>
</hibernate-configuration>
R

Alguem ae ta lendo minhas mensagens ? podem me responde ? ja postei 4 vezes a mesma coisa e o mano ae nao responde, eu to bugado sera ?

create

ou

auto

Alguem pode me responder se tao lendo minhas mensagens ? é sério, acho que invisivel, sei la…hehehehe

E

rof20004:
Alguem ae ta lendo minhas mensagens ? podem me responde ? ja postei 4 vezes a mesma coisa e o mano ae nao responde, eu to bugado sera ?

create

ou

auto

Alguém pode me responder se tao lendo minhas mensagens ? é sério, acho que invisível, sei la…hehehehe

sim eu li e fiz o que vocês pediram mas ainda não aparece as tabelas

R

Entendi, entao vejamos:

  1. Revise se voce importou todos os .jar necessário.

  2. Verifique se seu Banco esta instalado corretamente, se a porta onde o mesmo se encontra esta liberada no firewall(geralmente a porta do MySQL é a 3306).

<hibernate-configuration>  
<session-factory name="sistema">  
  <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>  // Ta certo mesmo ? tem vários drivers
  <property name="hibernate.connection.password">root</property>  
  <property name="hibernate.connection.url">jdbc:mysql://localhost/sistema</property>  // Coloque :3306 depois de localhost
  <property name="hibernate.connection.username">root</property>  
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
  <property name="hibernate.show_sql">true</property>  
  <property name="hibernate.hbm2ddl.auto">update</property>  // Mude para create, ou auto.
  <mapping class="Cliente"/>  
    
</session-factory>  
</hibernate-configuration>
Criado 15 de outubro de 2012
Ultima resposta 15 de out. de 2012
Respostas 19
Participantes 5