Dúvida com persistence.xml

Boa tarde!

Gostaria de saber como faço para criar tabelas automaticamente através de beans em um Dinamyc Project Web do eclipse???

Estou tentando, mas traz um erro dizendo que meu persistence.xml tem que estar no classpath…

P.S.: Criei o persistence.xml dentro da pasta META-INF

Obrigado…

OLá, o persistence.xml deve estar no raiz do projeto…

detalhe …

vc usa eclipse? se sim é mais fácil… fazer o seguinte…

trabalhe com 2 projetos, para a parte web(dynamic web project) e outro para os dados, crie um projeto como um módulo de dados, nele voce vai ter somente os jars do hibernate e seus beans, de domínio…

com isso se voce precisar escrever uma aplicação desktop(swing) ou pra celular, ou sei lá testar outra tecnologia na camada de apresentação é mais fácil implementar…

o seu projeto de dados não fica acoplado ao projeto web, na verdade o projeto web que será dependente do projeto de dados, e voce pode criar novos projetos todods dependentes do seu projeto de dados com o hibernate…

toncarvalho:

So uma correcao o persistence.xml deve estar na pasta META-INF dentro da raiz da pasta de fontes (source) do projeto.

dahenz:

como voce nao especificou se esta usando hibernante , toplink ou outro. Entao vou colocar aqui o parametro para hibernate e toplink, com isso seu DB é criado no start da sua aplicacao.

hibernate =
toplink =

[quote]
Estou tentando, mas traz um erro dizendo que meu persistence.xml tem que estar no classpath…

P.S.: Criei o persistence.xml dentro da pasta META-INF[/quote]
No Eclipse, a pasta META-INF com o arquivo persistence.xml deve ficar dentro da pasta src.

Se você está falando em gerar o banco de dados através do mapeamento das classes, você precisa indicar ao seu framework ORM para fazer isto. Se estiver usando o Hibernate, no seu arquivo persistence.xml deve conter o property

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

as outras opções de value são: update, create-drop, validate.

Moçada!! Consegui!!! Fiz o que falaram, criei uma pasta META-INF dentro src e executei um metodo main dentro de um dinamyc project web mesmo!!

Valew…

Beleza cara, mas já que é uma aplicação web, você pode criar um ServletContextListener para iniciar isto ao invés de executar um método main. Crie uma classe assim:

public class ServletListener implements javax.servlet.ServletContextListener {

  public void contextInitialized(ServletContextEvent arg0) {
   System.out.println("Contexto está sendo inicializado....");
    // Aqui você pode inicializar o processo da JPA e outras coisas mais.
  }

  public void contextDestroyed(ServletContextEvent arg0) {
    System.out.println("Contexto está sendo destruido....");
  // Aqui você pode destruir a(s) EntityManagerFactory da aplicação e fazer outras coisa que queira...
  }
}

depois registra ela no web.xml:

<listener>
	<listener-class>com.seupacote.ServletListener</listener-class>
</listener>

Valew a dica!!!

Agora me diz… é possível criar triggers dessa forma???

Obrigado Gilmar…

Se o que você quer dizer com criar triggers é monitorar a aplicação para quando um evento for disparado você fazer alguma tarefa, então a resposta é sim. Um listener é um “ouvinte” que fica ali esperando algum evento acontecer. A API dos servlets permite criar listeners para eventos em várias situações:
Para Eventos de Contexto: ServletContextListener e ServletContextAttributeListener
Para Eventos de Sessão: HttpSessionListener, HttpSessionAttributeListener, HttpSessionActivationListener e HttpSessionBindingListener
Para Eventos de Requisição: ServletRequestListener e ServletRequestAttributeListener
Dá uma estudada nesta API que o limite está entre a tua imaginação e o céu.

Hehe… valew… se eu achar algo vou te escrever!!!

Abraço