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

Como faço a conexão mySQL com o Java através da JPA?

Tenho o arquivo JAR da conexão do mySQL com o Java chamado "mysql-connector-java-8.0.17(1).jar", coloquei o mesmo dentro do diretório Lib (defini o mesmo para ser um local de acesso de jars).

Meu XML ficou assim:

<persistence-unit name="loja" transaction-type="RESOURCE_LOCAL"> 
    <properties>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/loja"/>
        <property name="javax.persistence.jdbc.user" value="root"/>
        <property name="javax.persistence.jdbc.password" value="*MinhaSenha*"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.hbm2ddl.auto" value="update"/>
    </properties>
</persistence-unit>

Ocorre os erros de "Could not obtain connection to query metadata", "Unable to create requested service", "Cannot get a connection as the driver manager is not properly initialized", "Error calling Driver#connect", " Unknown database 'loja' " (este último erro eu não entendi. Pois segundo o prof o update criaria a tabela caso não existisse).

Segue abaixo a classe main:

package br.com.alura.loja.testes;

import java.math.BigDecimal;

import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence;

import br.com.alura.loja.dao.CategoriaDao; import br.com.alura.loja.dao.ProdutoDao; import br.com.alura.loja.modelo.Categoria; import br.com.alura.loja.modelo.Produto; import br.com.alura.loja.util.JPAUtil;

public class CadastroDeProduto {

public static void main(String[] args) {

    Categoria celulares = new Categoria("CELULARES");
    Produto celular = new Produto("Xiaomi Redmi", "Muito legal", new BigDecimal("800"), celulares);

    EntityManagerFactory factory = Persistence
            .createEntityManagerFactory("loja");

    EntityManager em = JPAUtil.getEntityManager();

    ProdutoDao produtoDao = new ProdutoDao(em);
    CategoriaDao categoriaDao = new CategoriaDao(em);

    em.getTransaction().begin();

    categoriaDao.cadastrar(celulares);
    produtoDao.cadastrar(celular);

    em.getTransaction().commit();
    em.close();
}

}

O professor fez através do banco de dados H2. Eu pesquisei sobre a conexão com o MySql 8.0 Command Line Client e o que consegui foi o código em XML acima. Mas ocorrem os erros informados. O que tem de errado?

2 respostas
solução!

Oi Diego,

O erro é esse mesmo: Unknown database 'loja'. No seu MySQL não tem o banco de dados loja criado.

Obs: a JPA somente cria as tabelas dentro do banco de dados, mas o banco de dados em si ela não cria.

Entendi, muito obrigado Rodrigo! No momento não vou poder fazer a correção pq desinstalei o mySQL. Estou no curso de Spring e como lá ele usaria outra outro database, decidi desinstalar e buscar prosseguir com a nova database. Mas agradecido!