好像spring可以用dbcp或c3p0来配置数据库吧,然后注入hibernate的sessionFactory里,spring里关于hibernate的使用文档也这么举例的,但后来我去掉例子里的DataSource配置,而是直接在hibernate的sessionFactory配置里的"hibernateProperties"里通过hibernate.connection.driver_class,hibernate.connection.url,hibernate.connection.username,hibernate.connection.password来配置,一样能操作数据库啊,那我还配置DataSource做什么呢?配置如下:
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="mappingResources">
<list>
<value>xx/xx/***.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.connection.driver_class">org.postgresql.Driver</prop>
<prop key="hibernate.connection.url">jdbc:postgresql:***</prop>
<prop key="hibernate.connection.username">***</prop>
<prop key="hibernate.connection.password">***</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
</bean>
现在我就有个问题想请教大家了:
我这么写坏处在哪?是不是spring容器关闭时没法自动释放数据源?
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="mappingResources">
<list>
<value>xx/xx/***.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.connection.driver_class">org.postgresql.Driver</prop>
<prop key="hibernate.connection.url">jdbc:postgresql:***</prop>
<prop key="hibernate.connection.username">***</prop>
<prop key="hibernate.connection.password">***</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
</bean>
现在我就有个问题想请教大家了:
我这么写坏处在哪?是不是spring容器关闭时没法自动释放数据源?
解决方案 »
- spring在apache cxf所起的核心作用?
- 求大侠们能帮忙解释下两句话
- jsp urlwriter如何配置
- 求教servlet和jsp之间如何避免相互重复传递参数的问题?
- 请问哪位前辈能给我全国的IP地址分配表?
- INCLUDE的问题
- javamail的问题在线等待!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- struts.发生这样的错误.不知道各位遇到过没有.好怪啊.怎么改都是一样的提示..
- 关于用户登陆ip验证的问题,(做了一部分,有点问题)高分相送
- 请教高手,jsp中怎样进行模糊查询?
- eclipse中的web project
- 在linux下如何配置tomcat能将一个域名绑定到index.jsp
从内存中直接拿肯定要比使用DriverManager.getConnection();效率要高。从数据源中拿到的
连接都是被包装过的连接,改连接的close方法已经被重写,调用连接的close()就是把数据库连接又放回到
连接池中,实现数据库连接的重用.服务器跟数据库交互是进行网络交互的,消耗的服务器资源比较大,你获取一次连接使用后然后直接把它释放掉,
这将会极大的消耗服务器资源当然这仅仅是一点好处,还有许多就不一一说了,建议楼主查查这方面的资料
还有就是怎么配置能去掉tomcat里那些spring加载项的信息提示啊,一长串信息,看着累啊,而且心里不放心以为哪儿出错了,例如:
-........
-connection properties:{user=XXX,password=****,release_mod=on_close}
-........
这都打印出来,没必要吧,能去掉么?怎么配置
它在提交事务或者回滚事务后,会自动关闭连接的
那是使用了Spring的事务管理从DataSource对象中获取一个新的Connection对象,
并在事务启动时将它绑定到当前线程。
当事务终止时从当前线程中去除Connection对象,
并在必要的时候提供回滚活动的事务,
并及时关闭Connection对象。