springmvc框架的项目,如何在controller中使用dao访问数据库
2015-05-26 16:39
197 查看
在springmvc框架中,controller和其他的bean是被分别扫描的,原因是如果不这样配置,controller就会被扫描两次,从而导致事物等问题。
通常情况下,controller是不允许直接使用dao的,一个合理的设计就是在sevice中去调用dao。
但是如果有临时的需求需要在controller中访问数据库,那怎么办呢?
有两种方法。
方法1:在web.xml中配置,使spring对事物的控制设计请求的整个生命周期。
<!--配置Spring的OpenSessionInViewFilter,以解决懒加载异常的问题
-->
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
<init-param>
<!--指定sessionfactory的名字,默认为sessionFactory
-->
<param-name>sessionFactoryBeanName</param-name>
<param-value>sessionFactory</param-value>
</init-param>
</filter>
这也能解决在jsp页面中你去对象.对象.对象时,告诉你session已关闭的问题。
方法2:
直接使用sessionfactory。对数据库的访问都是通过sessionfactory执行的,所以可以在controller中直接注入sessionfactory对象,访问数据库时opensession即可。
网上都没有简单快捷的解决方案,特记录在此。
通常情况下,controller是不允许直接使用dao的,一个合理的设计就是在sevice中去调用dao。
但是如果有临时的需求需要在controller中访问数据库,那怎么办呢?
有两种方法。
方法1:在web.xml中配置,使spring对事物的控制设计请求的整个生命周期。
<!--配置Spring的OpenSessionInViewFilter,以解决懒加载异常的问题
-->
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
<init-param>
<!--指定sessionfactory的名字,默认为sessionFactory
-->
<param-name>sessionFactoryBeanName</param-name>
<param-value>sessionFactory</param-value>
</init-param>
</filter>
这也能解决在jsp页面中你去对象.对象.对象时,告诉你session已关闭的问题。
方法2:
直接使用sessionfactory。对数据库的访问都是通过sessionfactory执行的,所以可以在controller中直接注入sessionfactory对象,访问数据库时opensession即可。
网上都没有简单快捷的解决方案,特记录在此。
相关文章推荐
- SSH2框架--使用泛型DAO,JUnit测试时,如何使用事务,使用操作不真正的提交的数据库中
- Spring+Hibernate DAO 持久层开发, Spring 用 Hibernate 访问数据库的三种方法.推荐使用回调
- ARX二次开发中使用DAO方式访问数据库,导致AutoCAD2004及以上版本退出时报错的解决方法
- SpringMVC 中如何将MultiActionController和CommandController结和使用
- SpringMVC中如何将MultiActionController和CommandController结和使用
- 当项目使用的数据库更换后,如何将tomcat的服务改为对应的库
- DAO 数据库访问封装 使用微软的AdoHelper
- 如何在自己工程项目中使用TouchJSON框架
- 数据库访问层中使用GenericDao和HibernateDaoSupport
- 数据库访问层中使用GenericDao和HibernateDaoSupport
- 如何用DAO访问Access2000数据库
- [How To]如何使用Wildfish进行ISeries项目开发--数据库建立部分
- ARX二次开发中使用DAO方式访问数据库,导致AutoCAD2004及以上版本退出时报错的解决方法
- 如何恢复一个非用户sa创建的数据库,且使用原用户创建者进行访问
- 如何在自己工程项目中使用TouchJSON框架
- 如何独立使用django的数据库访问功能
- 【loadrunner使用篇】--LR如何访问和读取数据库
- 如何在ARC项目中使用非ARC的开源框架
- 如何在ARC项目中使用非ARC的开源框架
- Windows8[Web应用程序项目***已配置为使用IIS。无法访问IIS元数据库,您没有足够的特权访问计算机上的IIS网站]