JPA..uso no dia-a-dia com WEB ...algumas duvidas?

2 respostas
P

Mais uma duvida fiz o que você me passou só estou em duvida so seguinte
pois o projeto é WEB e não vai usar spring e nem ejb.

Duvidas :

  • O acesso ao arquivo persistence.xml varias vezes não fica lento o sistema pois coloquei em meu
    ClienteDAO , por exemplo assim como abaixo e tenho 30 DAOS no sistema ?
private     EntityManager DBMng; 
protected   EntityManagerFactory factory     = Persistence.createEntityManagerFactory(banco);

  public void persist(T t) throws DaoException {
    	try {
    		DBMng = factory.createEntityManager(); 
    		DBMng.getTransaction().begin();
    		DBMng.persist(t);
    		DBMng.getTransaction().commit();
    	} catch(Exception e) {
    		DBMng.getTransaction().rollback();
    		
    	}finally{
    		DBMng.close();
    		
    	}
    }

---
 public T find(T entity) throws DaoException {
    	T t = null;
    	try {
    		DBMng = factory.createEntityManager(); 
    		t = DBMng.find(domainClass, entity);
    		return t;
    	} catch(Exception e) {
    	}finally{
    		
    	}
    }

Outra Duvida :

  • Minha configuração do arquivo persistence.xml abaixo vai usar pool de conexão e dessa forma que estou
    usando onde abro sessão com o banco de dados e fecho em cada metodo tem algum problema de não conseguir conexão
    com o banco pois já me deu esse erro :
javax.servlet.ServletException: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Cannot open connection
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
         <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
         <property name="hibernate.connection.url" value="jdbc:mysql://localhost/banco"/>
         <property name="hibernate.connection.username" value="root"/>
         <property name="hibernate.connection.password" value="root"/>
         <property name="hibernate.show_sql" value="true" />  
         
         <property name="hibernate.c3p0.min_size" value="0"/>
         <property name="hibernate.c3p0.max_size" value="10"/>
         <property name="hibernate.c3p0.timeout" value="1000"/>
         <property name="hibernate.c3p0.max_statements" value="50"/>
         <property name="hibernate.c3p0.idle_test_period" value="3000"/>
         <property name="hibernate.c3p0.acquire_increment" value="2"/>

2 Respostas

Rafael_Carneiro

paribe:
O acesso ao arquivo persistence.xml varias vezes não fica lento o sistema pois coloquei em meu
ClienteDAO , por exemplo assim como abaixo e tenho 30 DAOS no sistema ?

Crie uma classe que gerencie a utilização do EntityManager (obter, fechar conexões, etc).

paribe:
Minha configuração do arquivo persistence.xml abaixo vai usar pool de conexão e dessa forma que estou
usando onde abro sessão com o banco de dados e fecho em cada metodo tem algum problema de não conseguir conexão
com o banco pois já me deu esse erro :

Faça como eu te falei em outro post. O problema é que você fecha o EntityManager em um primeiro método e, quando esse objeto é utilizando em um segundo método, ele já está fechado.

P

valeu…obrigado

Criado 8 de janeiro de 2009
Ultima resposta 9 de jan. de 2009
Respostas 2
Participantes 2