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);
}
}