1

I am trying, for the first time, to use the JavaDB (Apache Derby) as a database, for a graduation project (IT technician), but I am having trouble in connecting to the pre created database.

I'm using Hibernate as the connection framework but I can't get the connection done! Ahead is the trace of the exception, I get it as soon as I try to persist an object at the database for the 1º time.

Exception in thread "main" org.hibernate.HibernateException: Unable to make JDBC Connection [jdbc:derby://localhost:1527/db_thermium;create=true]
    at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:60)
    at org.hibernate.engine.jdbc.connections.internal.PooledConnections.addConnections(PooledConnections.java:106)
    at org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.java:40)
    at org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.java:19)
    at org.hibernate.engine.jdbc.connections.internal.PooledConnections$Builder.build(PooledConnections.java:138)
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:110)
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:74)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:207)
    at org.hibernate.internal.AbstractSharedSessionContract.getJdbcConnectionAccess(AbstractSharedSessionContract.java:424)
    at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.<init>(JdbcCoordinatorImpl.java:102)
    at org.hibernate.internal.AbstractSharedSessionContract.<init>(AbstractSharedSessionContract.java:194)
    at org.hibernate.internal.AbstractSessionImpl.<init>(AbstractSessionImpl.java:29)
    at org.hibernate.internal.SessionImpl.<init>(SessionImpl.java:246)
    at org.hibernate.internal.SessionFactoryImpl$SessionBuilderImpl.openSession(SessionFactoryImpl.java:1193)
    at org.hibernate.internal.SessionFactoryImpl.buildEntityManager(SessionFactoryImpl.java:572)
    at org.hibernate.internal.SessionFactoryImpl.createEntityManager(SessionFactoryImpl.java:559)
    at org.hibernate.internal.SessionFactoryImpl.createEntityManager(SessionFactoryImpl.java:154)
    at gerenciador.EntityManagerUtil.getEntityManager(EntityManagerUtil.java:16)
    at gerenciador.GenericDAO.salvar(GenericDAO.java:27)
    at main.Programa.inserirElemento(Programa.java:32)
    at main.Programa.iniciar(Programa.java:19)
    at main.Programa.main(Programa.java:14)

 main.Programa.main(Programa.java:14)

.Here is the persistence file text:

<?xml version="1.0" encoding="UTF-8"?>
<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"
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="teste" transaction-type="RESOURCE_LOCAL">
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
            <property name="javax.persistence.jdbc.username" value="usuario" />
            <property name="javax.persistence.jdbc.password" value="123" />
            <property name="javax.persistence.jdbc.url"    value="jdbc:derby://localhost:1527/db_thermium;create=true" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/>
            <property name="show_sql" value="true"/>
            <property name="hibernate.temp.use_jdbc_metadata_defaults" value="false"/>
        </properties>
    </persistence-unit>
</persistence>

.The EntityManager class:

package gerenciador;


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


public class EntityManagerUtil {
    private static EntityManagerFactory emf = null;

    public static EntityManager getEntityManager() {
         if (emf == null){
            emf = Persistence.createEntityManagerFactory("teste");
         }
         return emf.createEntityManager();
    }



    public static EntityManagerFactory getEmf() {
        return emf;
    }



    public static void closeEntityFactory() {
        if (emf != null)
            emf.close();
    }
}

.The GenericDAO:

package gerenciador;

import java.io.Serializable;
import java.util.List;

import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;

public abstract class GenericDAO<T, I extends Serializable> {

   @Inject
   private Class<T> persistedClass;

   protected GenericDAO() {
   }

   protected GenericDAO(Class<T> persistedClass) {
       this();
       this.persistedClass = persistedClass;
   }

   public T salvar(T entity) {
       EntityManager em = EntityManagerUtil.getEntityManager();
       EntityTransaction t = em.getTransaction();
       t.begin();
       em.persist(entity);
       em.flush();
       t.commit();
       EntityManagerUtil.closeEntityFactory();
       return entity;
   }

   public T atualizar(T entity) {
       EntityManager em = EntityManagerUtil.getEntityManager();
       EntityTransaction t = em.getTransaction();
       t.begin();
       em.merge(entity);
       em.flush();
       t.commit();
       EntityManagerUtil.closeEntityFactory();
       return entity;
   }

   public void remover(I id) {
       T entity = encontrar(id);
       EntityManager em = EntityManagerUtil.getEntityManager();
       EntityTransaction t = em.getTransaction();
       t.begin();
       T mergedEntity = em.merge(entity);
       em.remove(mergedEntity);
       em.flush();
       t.commit();
       EntityManagerUtil.closeEntityFactory();
   }

   public List<T> getList() {
       EntityManager em = EntityManagerUtil.getEntityManager();
       CriteriaBuilder builder = em.getCriteriaBuilder();
       CriteriaQuery<T> query = builder.createQuery(persistedClass);
       query.from(persistedClass);
       return em.createQuery(query).getResultList();
   }

   public T encontrar(I id) {
       EntityManager em = EntityManagerUtil.getEntityManager();
       return em.find(persistedClass, id);
   }
}

The ij connection test result

halfer
  • 19,824
  • 17
  • 99
  • 186

0 Answers0