Duvida sobre como configurar o hibernate

3 respostas
G

Boa tarde, estou com o seguinte problema, eu estou desenvolvendo uma aplicaçao e ela faz muitas buscas no banco, eu configurei o hibernate mas sou iniciante e nunca tinha feito nada com o mesmo antes, e minha aplicaçao depois de um tempo executando ela trava falando q foi excedido o numero maximo de sessions, eu estou usando um banco de dados oracle express como teste mas msm assim creio que msm com o numero de sessoes limitadas q esse banco tem nao era pra dar esse erro.

esse eh um exemplo de uma classe DAO que eu fiz

public class ServerDAO {
	private SessionFactory sessionFactory;
	private Logger logger;
	
	public ServerDAO() {
		sessionFactory = new Configuration().configure().buildSessionFactory();
		//PropertyConfigurator.configure("log4j.properties");
		logger = Logger.getLogger(ServerDAO.class);
	}
	
	public void insert(Server s){
		try{
			logger.info("Inserindo novo servidor " + s.toString());
			
			Session session = sessionFactory.getCurrentSession();
			session.beginTransaction();
		
			session.save(s);
		
			session.getTransaction().commit();
			sessionFactory.close();
			
			logger.info("Servidor inserido com sucesso.");
		}catch (Exception ex){
			logger.error("Não foi possível inserir um novo Servidor. Motivo:\n" + ex.getMessage());
		}
	}
	
	public Server getServer(int code){
		try{
			sessionFactory = new Configuration().configure().buildSessionFactory();
			logger.info("Obtendo Servidor código " + code + " do banco de dados.");
			
			Session session = sessionFactory.getCurrentSession();
			session.beginTransaction();
			
			Server s = (Server) session.get(Server.class, code);
			
			sessionFactory.close();
			
			logger.info("Servidor obtido com sucesso.");
			
			return s;
		}catch (Exception ex){
			logger.error("Erro ao obter Servidor com código " + code + ". Motivo:\n" + ex.getMessage());
		}
			
		return null;
	}
	
	@SuppressWarnings("unchecked")
	public List<Server> getServerList(){
		try{
			logger.info("Obtendo a lista de Servidores do banco de dados.");
			
			Session session = sessionFactory.getCurrentSession();
			session.beginTransaction();
			
			List<Server> Servers = session.createCriteria(Server.class).list();
			
			sessionFactory.close();
			
			logger.info("Lista de Servidores obtida com sucesso.");
			
			return Servers;
		}catch (Exception e){
			logger.error("Não foi possível obter a lista de Servidores.\nMotivo: " + e.getMessage());
		}
		
		return null;
	}
	
	public void update(Server s){
		try{
			logger.info("Atualizando dados do Servidor: " + s.toString());
			
			Session session = sessionFactory.getCurrentSession();
			session.beginTransaction();
		
			session.update(s);
		
			session.getTransaction().commit();
			sessionFactory.close();
			
			logger.info("Atualização do Servidor realizada com sucesso.");
		}catch (Exception ex){
			logger.error("Não foi possível atualizar o Servidor " + s.toString() + ". Motivo:\n" + ex.getMessage());
		}
	}
	
	public void delete(Server s){
		try{
			logger.info("Excluindo Servidor: " + s.toString());
			
			Session session = sessionFactory.getCurrentSession();
			session.beginTransaction();
		
			session.delete(s);
		
			session.getTransaction().commit();
			sessionFactory.close();
			
			logger.info("Exclusão do Servidor efetuada com sucesso.");
		}catch (Exception ex){
			logger.error("Não foi possível excluir o Servidor " + s.toString() + ". Motivo:\n" + ex.getMessage());
		}
	}
	
	public List<Server> getServerFilter(String name){
		try{
			logger.info("Obtendo a lista de Servidores do banco de dados.");
			
			Session session = sessionFactory.getCurrentSession();
			session.beginTransaction();
			
			Criteria crit = session.createCriteria(Server.class);
			crit.add(Restrictions.like("name", "%"+name+"%"));
			List results = crit.list();
										
			sessionFactory.close();
			
			logger.info("Lista de Servidores obtida com sucesso.");
			
			return results;
		}catch (Exception e){
			logger.error("Não foi possível obter a lista de Servidores.\nMotivo: " + e.getMessage());
		}
		
		return null;
	}

}

3 Respostas

ignacio83

Vc deve ter somente um sessionFactory para cada datasource. Desse jeito que vc está fazendo vc está fechando o sessionFactory. Não feche o sessionFactory, feche a Session.

G

ta e como q eu vo fazer isso tem como me ajudar?

ignacio83

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/tutorial.html

Procure pela classe HibernateUtil

Criado 29 de outubro de 2009
Ultima resposta 29 de out. de 2009
Respostas 3
Participantes 2