Olá,
Bom dia,
Foi montado o DAO pattern acessando hibernate.
No HibernateDAOFactory. java tem um método static
que cria a conexão com a base de dados:
public class HibernateDAOFactory extends DAOFactory
{
/**
* This method create the DataSource
*
* @param factory SessionFactory
*
* @return DataSource
*
* @throws Exception
*/
public static DataSource createDataSource(SessionFactory factory)
throws Exception
{
DataSource dataSource = new DataSource();
dataSource.setFactory(factory);
return dataSource;
}
// ... outras cositas
}
Esta classe é utilizada pelos DAOs, que têm atributo dataSource
para acesso ao DB, no construtor da classe abaixo:
public class HibernateManagerDAO implements TripDAO
{
/** Object to access log4j */
static Logger log = Logger.getLogger(HibernateManagerDAO.class);
/** DataSource attribute */
DataSource dataSource = null;
/**
* Constructor
*
* @param sessionFactory
*/
public HibernateTripDAO(SessionFactory sessionFactory)
{
try
{
dataSource = HibernateDAOFactory.createDataSource(sessionFactory);
}
catch (Exception e)
{
log.error("Error on instanced: " + e);
}
}
então no HibernateManagerDAO eu tenho as implementações dos
métodos de acesso na base de dados.
Gostaria de saber onde eu crio uma chamada explicita para liberar
recursos no DAO? tipo eu tenho um createDataSource(), então
eu precisaria de um destroyDataSource() ou releaseResources()
ou algo do tipo.
Procurei por várias alteranativas, mas gostaria de saber a maneira
mais adequada para tal.
O motivo desta chamada explicita é que está se usando hibernate
e EJB, dentro de SessionBean. Pelo que estavam me explicando,
e pelo que entendi, os recursos não estão sendo liberados e
muitas sessões ficam “penduradas” na base de dados.
Valew!!!
abraço!