Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Arquitetura Eclipse/JSF/JPA

Boa tarde

Percebi que existe uma lacuna na explicacao no que tange a criacao de um projeto dynamic-project-web atraves do eclipse.

Tudo bem, pensei... irei fazer com o bom maven, assim como estava acostumado a criar tal integracao com spring-mvc e JPA .

A dor de cabeca comecou... depois de muito tentar criar um projeto maven com JSF com auxilio do JBOSS-FORGE para montar a estrutura inicial, nao consigo fazer o meu persistence.xml ao menos dar erro... (sim ele esta no src/META_INF).

Tentei com Mysql, Sqlserver,Posgree... mas nada adiantava, pois meu persistence.xml era solenemente ignorado no start do tomcat.

Diante desse cenario, resolvi seguir as aulas e tentar depois a criacao com do projeto com o maven, pois bem, criei o project como dynamic web project no eclipse e copiei os jars para a lib e etc... ao dar start no tomcat, novamente meu persistence.xml eh ignorado.

Ao ver a aula numero 3 percebo que o professor importa o projeto ja configurado e que tudo funciona(inclusive comigo).

Mas eh um pouco chato seguir adiante sem saber como foi criado o projeto. Nao creio que essa duvida esteja diretamente relacionada com o curso de JPA, pois ja conclui os mesmos e nao ajudaria muito voltar a ve-los para entender essa integracao do mundo JSF - ECLIPSE -JPA.

Minha duvida eh exatamente essa: Criacao de um projeto do zero no eclipse (dynamic-project-web ou project maven)ou usando JBOSS-FORGE com maven(minha preferencia) e explicar os detalhes para fazer a JPA funcionar com minhas classes de modelo(@Entity) criando as tabelas de acordo com a configuracao no persistence.xml. Seria Possivel ? Grato

obs:desculpe a ausencia de acentuacao.

4 respostas

Percebo agora que a aplicacao baixada na aula3 nao faz o que eu imaginava. A criacao automatica das tabelas. Portanto o problema esta em registrar no start da aplicacao a execucao das instrucoes do persistence.xml

Boa noite, Julio! Como vai?

Em relação à criação do projeto que vc quer saber, acho que esse vídeo do curso de Java EE vai te ajudar, pois nele é criado um projeto com o Jboss Forge do zero usando maven, JSF, CDI e outras coisas!

https://cursos.alura.com.br/course/java-ee-webapp/task/18053

E, sobre a configuração do JPA:

https://cursos.alura.com.br/course/java-ee-webapp/task/19742

Grande abraço!

solução!

Boa Noite Eu Agora percebo a confusao, ou seja, ao criar app com springboot temos essa integracao do JPA com ServletContainer automatica em funcao das anotacoes usadas ou listeners registrados... e do application.properties(que toma o lugar do persistence.xml).

Contudo ao criar uma app JSF com JPA nao teremos o suporte oferecido pelo backend e paradigma spring.

Entao para integrar a criacao do entityManager no start, por exemplo, do tomcat, basta adicionar um listener no web.xml indicando a classe responsavel por isso.

.
.
.
   <listener>
        <listener-class>
         br.com.caelum.livraria.config.AppServletContextListener
        </listener-class>
    </listener>
</web-app>

e implementar a interface ServletContextListener:

public class AppServletContextListener implements ServletContextListener {
    private static EntityManagerFactory emf;

    public void contextInitialized(ServletContextEvent event) {
        emf = Persistence.createEntityManagerFactory("livraria");
        createEntityManager();
    }

    public void contextDestroyed(ServletContextEvent event) {
        emf.close();
    }

    public static EntityManager createEntityManager() {
        if (emf == null) {
            throw new IllegalStateException("Context is not initialized yet.");
        }

        return emf.createEntityManager();
    }
}

Mto bem, Julio! Se sua dúvida tiver sido respondida, não esqueça de marcar a solução para deixar o post como resolvido!

Grande abraço e bons estudos!