不使用任何文件,用代码动态创建数据源连接:
第一种方法:使用datasource和数据库方言初始化SessionFactory对象
步骤:
一、创建datasource,这里使用c3p0的ComboPooledDataSource。
二、创建SessionFactory,这里使用hibernate4的LocalSessionFactoryBean,LocalSessionFactoryBean的getObject方法被重写了,会返回一个SessionFactory对象。
三、把第一步创建的datasource赋给LocalSessionFactoryBean对象,并且设置HibernateProperties的dialect
四、利用LocalSessionFactoryBean创建Session,操作数据库。
代码:
@RequestMapping(value = "/datasource")
public @ResponseBody String createDatasource2() throws Exception {
SessionFactory factory=null;
Session session=null;
Properties props = new Properties();
props.put("hibernate.dialect", "com.supermap.realestate.dao.dialect.SuperMapOracleDialect");
/********通过LocalSessionFactoryBean的方式获取*******/
ComboPooledDataSource poolDatasource=new ComboPooledDataSource();
poolDatasource.setDriverClass("oracle.jdbc.driver.OracleDriver");
poolDatasource.setJdbcUrl("jdbc:oracle:thin:@192.168.100.26/ORCL");
poolDatasource.setUser("BDCK");
poolDatasource.setPassword("salis");
poolDatasource.setCheckoutTimeout(3000);
poolDatasource.setIdleConnectionTestPeriod(30);
poolDatasource.setMaxIdleTime(30);
poolDatasource.setInitialPoolSize(5);
poolDatasource.setMinPoolSize(5);
poolDatasource.setMaxPoolSize(100);
poolDatasource.setAcquireIncrement(5);
org.springframework.orm.hibernate4.LocalSessionFactoryBean bean=new LocalSessionFactoryBean();
bean.setHibernateProperties(props);
bean.setDataSource(poolDatasource);
bean.afterPropertiesSet();
factory=bean.getObject();
session=factory.openSession();
SQLQuery query = session.createSQLQuery("select count(1) from bdck.bdcs_xmxx");
String strCount = query.uniqueResult().toString();
System.out.println(strCount);
return "11";
}
第二种方法:不使用datasource,直接用Properties初始化Configuration,再用Configuration创建SessionFactory
步骤:
一、初始化Properties
二、用Properties初始化Configuration
三、用Configuration创建SessionFactory
代码:
@RequestMapping(value = "/datasource")
public @ResponseBody String createDatasource() throws Exception {
SessionFactory factory=null;
Session session=null;
Properties props = new Properties();
props.put("hibernate.connection.driver_class", "oracle.jdbc.driver.OracleDriver");
props.put("hibernate.connection.url", "jdbc:oracle:thin:@192.168.100.26/ORCL");
props.put("hibernate.connection.username", "BDCK");
props.put("hibernate.connection.password", "salis");
props.put("hibernate.hbm2ddl.auto", "update");
props.put("hibernate.dialect", "com.supermap.realestate.dao.dialect.SuperMapOracleDialect");
/********通过Configuration获取SessionFactory*******/
Configuration configuration = new Configuration();
configuration.setProperties(props);
factory=configuration.buildSessionFactory();
session=factory.openSession();
SQLQuery query = session.createSQLQuery("select count(1) from bdck.bdcs_xmxx");
String strCount = query.uniqueResult().toString();
System.out.println(strCount);
return "11";
}