Hibernate-手动初始化数据源连接

不使用任何文件,用代码动态创建数据源连接:

第一种方法:使用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";
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值