Suministrar conexiones JDBC a la sesión, necesita una implementación de ConnectionProvider.
Bu predeterminado, Hibernate usa DatasourceConnectionProvider
que obtiene una instancia DataSource
de JNDI.
Para usar la instancia personalizada DataSource
use InjectedDataSourceConnectionProvider
, e inyecte la instancia DataSource
en ella.
No es TODO nota en InjectedDataSourceConnectionProvider
NOTA: setDataSource (javax.sql.DataSource) debe ser llamado antes de la configure (java.util.Properties).
TODO: no se pudo encontrar dónde se llama realmente setDataSource. ¿No se puede pasar esto solo a configure ???
Según la nota, llame al método setDataSource()
desde el método configure()
.
public class CustomConnectionProvider extends InjectedDataSourceConnectionProvider {
@Override
public void configure(Properties props) throws HibernateException {
org.apache.commons.dbcp.BasicDataSource dataSource = new BasicDataSource();
org.apache.commons.beanutils.BeanUtils.populate(dataSource, props);
setDataSource(dataSource);
super.configure(props);
}
}
También puede extender UserSuppliedConnectionProvider.
De acuerdo con el contrato de ConnectionProvider
ejecutores deben proporcionar una constructor público predeterminado.
Hibernate invocará este constructor, si se establece ConnectionProvider personalizado a través de la instancia de configuración.
Configuration cfg = new Configuration();
Properties props = new Properties();
props.put(Environment.CONNECTION_PROVIDER, InjectedDataSourceConnectionProvider.class.getName());
cfg.addProperties(props);
¿tiene algún vínculo a las configuraciones de ejemplo? – newbie
@newbie: ¿Te refieres a la documentación? http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/session-configuration.html – skaffman
Quería decir cómo puedo usar LocalSessionFactoryBean – newbie