Duvida refernte DAO com Hibernate devolver a session?

0 respostas
P

Olá,

no exemplo abaixo estou gravando no banco de dados e como estou usando pool de conexão
nesse caso abaixo preciso fechar a session que foi passada para devolver ou
automaticamente é devolvido após o uso.
Porque no xml eu defini 5 ao usar ele devolve ou tenho que usar finally declarando um close.

Se alguém puder me ajudar agradeceria.

abs

public static void main(String[] args) {
		//Pegar Session Hibernate
		Session session = HibernateUtil.openSession();
		tx = session.beginTransaction();
		try{
		
			NivelFacade NivelFacade     = new NivelFacade(session);
			FilialFacade FilialFacade   = new FilialFacade(session);
			UsuarioFacade UsuarioFacade = new UsuarioFacade(session);
			//Instancia o objeto Usuario
			Usuario p = new Usuario();
	
			//Ler o nivel
			Nivel nivel = NivelFacade.find(Nivel.class, 01L);
			p.setNivel(nivel);
	
			//Ler a filial
			Filial filial = FilialFacade.find(Filial.class, 900L);
			p.setFilial(filial);
			
			// Popula o Objeto Usuario
			p.setLogin("pwd999");
			p.setSenha("senha nova9");
			p.setDtInicial(new Date());
			p.setDtFim(new Date());
			p.setNomeUsuario("Usuario999");
			Long nrcpf = Long.valueOf("[telefone removido]"); 
			p.setCpf(nrcpf);
			
			// Grava o objeto Usuario
			UsuarioFacade.persist(p);
			tx.commit();
			System.out.println("Id  = "+p.getId());

		}catch(DAOException d){
			tx.rollback();
			System.out.println("Erro ="+d);
		}catch(Exception e){
			tx.rollback();
			System.out.println("Erro ="+e);
		}
			
		}}
import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {

	private static final Logger logger = Logger.getLogger(HibernateUtil.class);
	private static final SessionFactory sessionFactory;
	private static ThreadLocal<Session> sessions = new ThreadLocal<Session>();
	static {
		sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
	}
	public static Session openSession() {
		if (sessions.get() != null) {
			logger.error("Essa sessão está ainda aberta !! ");
			// grave, alguem nao fechou uma sessao ja aberta!
		}
		sessions.set(sessionFactory.openSession());
		return sessions.get();
	}

	lic static void closeCurrentSession() {
		sessions.get().close();
		sessions.set(null);
	}

	lic static Session currentSession() {
		return sessions.get();
	}
	
	public static SessionFactory getSessionFactory() {
	    return sessionFactory;
	}
	
}
<hibernate-configuration>
	<session-factory>

		<property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property>
		<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="hibernate.connection.url">jdbc:oracle:thin:@129.1.30.123:1521:XXXXXX</property>
		<property name="hibernate.connection.username">des</property>
		<property name="hibernate.connection.password">des</property>

		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>

		<property name="hibernate.c3p0.min_size">5</property>
		<property name="hibernate.c3p0.max_size">20</property>
		<property name="hibernate.c3p0.timeout">180</property>
		<property name="hibernate.c3p0.idle_test_period">100</property>
		
		<mapping class="br.com.xxx.bean.Usuario"/>
		<mapping class="br.com.xxx.bean.Filial"/>
		<mapping class="br.com.xxx.bean.Nivel"/>
		
	</session-factory>
Criado 16 de setembro de 2009
Respostas 0
Participantes 1