Criar tabelas automaticamente no PostgreSQL usando JPA e Tomcat

Olá galera… gostaria de uma ajuda… saber como faz, ou o que estou fazendo de errado! Quero mapear o meu banco de dados de modo que quando eu suba o servidor, ele crie todo o banco para mim. Estou usando BD PostgreSQL, Tomcat 7 e Eclipse.

meu persistence.xml

<properties>
	<property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JDBCTransactionFactory" /> 
	<property name="hibenate.show_sql" value="true"/>
	<property name="hibernate.format_sql" value="true"/>
	<property name="hibernate.hbm2ddl.auto" value="update" />
	<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
</properties>

As libs do projeto (um print do eclipse com as libs q estou usando)
http://www.4shared.com/photo/uPmS8KQx/libs.html

o que mais precisa?
Obrigado!

você tem que adicionar no xml as classes que quer tornar persistente

ex.: seupacote.SuaClasse

outra coisa é que o xml tem que estar na pasta META-INF

use este artigo como referência
http://www.caelum.com.br/apostila-java-web/uma-introducao-pratica-ao-jpa-com-hibernate/#14-8-exercicios-configurando-o-jpa-e-gerando-o-schema-do-banco

Valeu Denilson, isso eu já havia feito… só não havia postado o código completo.

Mas acho que deu certo… só que eu tenho que parar o servidor, dar um “Clean” e depois iniciar de novo… só dar um restart nao funciona… mas tenho a impressao de que não é sempre que dá certo. =/

mas enfim, obrigado pela ajuda! :slight_smile:

é, não é sempre que dá certo! hehehe

acabei de criar 2 Classes, e estou tentando “startar” o servidor e nada acontece =(

vo postar o código, caso alguém veja algum erro:

persistence.xml (dentro da pasta META-INF, que está dentro da pasta src)

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
	<persistence-unit name="rastreabilidade" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<non-jta-data-source>java:comp/env/jdbc/rastreabilidadeDS</non-jta-data-source>
		
		<class>rastreabilidade.modelo.Usuario</class>
		<class>rastreabilidade.modelo.Empresa</class>
		<class>rastreabilidade.modelo.Fase</class>
		<class>rastreabilidade.modelo.Campos</class>
		<class>rastreabilidade.modelo.Produto</class>
		<class>rastreabilidade.modelo.Teste</class>
		<class>rastreabilidade.modelo.Pais</class>
		<class>rastreabilidade.modelo.Estado</class>
		<class>rastreabilidade.modelo.Cidade</class>
		
		<properties>
			<property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JDBCTransactionFactory" /> 
			<property name="hibenate.show_sql" value="true"/>
			<property name="hibernate.format_sql" value="true"/>
			<property name="hibernate.hbm2ddl.auto" value="update" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
		</properties>
	</persistence-unit>
</persistence>

Classe model Estado

package rastreabilidade.modelo;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name="estado")
public class Estado implements Serializable{

	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(name="estado", sequenceName="pais_cod_estado_seq",allocationSize=1)
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="estado")
	@Column(name="cod_estado", nullable=false, unique=true)
	private Integer cod_estado;
	
	@Column(name="nome")
	private String nome;
	
	@ManyToOne(fetch = FetchType.EAGER) 
	@JoinColumn(name="cod_pais")
	private Pais fk_pais;


	//Getters e Setters
}

Obrigado!