`
wu_quanyin
  • 浏览: 208234 次
  • 性别: Icon_minigender_1
  • 来自: 福建省
社区版块
存档分类
最新评论

Hibernate---基础理解+OpenSessionInViewFilter

阅读更多

 

一,SessionFactory

   1,是线程安全的,它的同一个实例可以被多个线程共享。

  2,是重量级的,不能随意创建或销毁它的实例,如果为应用同时访问多个数据库,则需要为每个数据库创建一个单独的SesisonFactory实例

  //可用于自定义查询

  <property name="total"  formula="select count(*) from user as u"/>

二,OpenSessionInViewFilter

   在没有使用Spring提供的Open Session In View情况下,因需要在service(or Dao)层里把session关闭,所以lazy loading 为true的话,要在应用层内把关系集合都初始化,如 company.getEmployees(),否则Hibernate抛session already closed Exception;    OpenSessionInView提供了一种简便的方法,较好地解决了lazy loading问题.     
   它有两种配置方式OpenSessionInViewInterceptor和 OpenSessionInViewFilter(具体参看SpringSide),功能相同,只是一个在web.xml配置,另一个在 application.xml配置而已。    
     Open Session In View在request把session绑定到当前thread期间一直保持hibernate session在open状态,使session在request的整个期间都可以使用,如在View层里PO也可以lazy loading数据,如 ${ company.employees }。当View 层逻辑完成后,才会通过Filter的doFilter方法或Interceptor的postHandle方法自动关闭session。

1,配置方式

application.xml 

  1. <bean name="openSessionInViewInterceptor" class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">    
  2. <property name="sessionFactory">    
  3. <ref bean="sessionFactory"/>    
  4. </property>    
  5. </bean>    
  6. <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">    
  7. <property name="interceptors">    
  8. <list>    
  9. <ref bean="openSessionInViewInterceptor"/>    
  10. </list>    
  11. </property>    
  12. <property name="mappings">    
  13. ...    
  14. </property>    
  15. </bean>
  16. -----------------------------------

一,hibernate提供三种缓存机制
1,默认的查询缓存区域:net.sf.hibernate.cache.StandardQueryCache
2,用户自定义的查询缓存区域:customerQuries
3,时间戳缓存区域:net.sf.hibernate.cache.UpdateTImestampCache

   在查询区域存放查询缓存,时间戳区域存放与查询相关插入、更新缓存.在某一时刻进行查询时,先对比查询与更新这两块缓存的时间,看那个时刻的时间离这最近 如果查询的近,直接进行查询,不对数据库进行操作。如果删除、更新的近,删查询中相对应的,然后到数据库中查,再重新加入查询缓存。但是如果你手动修改数 据库,hibernate监视不到,这样一来他就会到查询缓存中找,这样就会数据不同步。可执行Query接口 setForceCacheRefresh(true)使查询缓存丢弃,重新查,重新加入查存。、、392存储过程的使用。批量更新删除不用 hibernate缓存,可以用jdbc,这样的话,就可以节省与缓存操作时间.但如果是批量查询的话,可以用缓存.

二,mysql有text blob与oracle有clob blob相对应。

三,可以再.hbm.xml中写相应的hql语句

<query name="findcustomerbyname"><![DATA[
     from Customer c where c.name like :name
]]></query>


Query query=session.getNamedQuery("findcustomerbyname");
query.setString("name",name);
List result=query.list();

 

0
0
分享到:
评论

相关推荐

    hibernate面试题总结

    Hibernate是Java领域中一款流行的持久化框架,它简化了与关系数据库之间的交互,提供了一种对象关系映射(ORM)的解决方案。以下是对面试中可能会遇到的...理解并掌握这些内容对于深入学习和使用Hibernate至关重要。

    OpenSessionInView项目整合jar包

    2. **启用OpenSessionInView过滤器**:在web.xml中配置OpenSessionInViewFilter,该过滤器会在HTTP请求开始时开启一个新的Hibernate Session,并在请求结束时提交或回滚事务并关闭Session。 3. **编写业务逻辑**:在...

    ssh+mysql整合[参考].pdf

    SSH(Struts2、Spring、Hibernate)是一种常见的Java Web应用程序开发框架组合,用于构建高效、模块化和可扩展的企业级应用。在这个组合中,Struts2作为...尽管如此,SSH仍然是理解企业级Java Web开发基础的重要参考。

    免费简历模板参考JavaEE-小鱼6号.docx

    - **临潼德荥纸业有限公司客户管理系统** 项目,开发者负责了客户资源管理、权限控制等多个模块,利用Spring的OpenSessionInViewFilter解决懒加载问题。 以上是根据简历模板中提及的专业技能和项目经验所解析的...

    JavaEE---翟明明6500.doc

    翟明明在多个项目中使用了Hibernate,表明他对数据库操作有深入理解,能有效管理对象与数据库表之间的映射关系。 3. **Spring**:Spring框架是JavaEE开发的核心,它提供了依赖注入(DI)、面向切面编程(AOP)和...

    java面试宝典

    - `OpenSessionInViewFilter` 是Spring和Hibernate整合中常用的一个过滤器,它确保在一次HTTP请求的整个生命周期内,都存在一个有效的Hibernate Session。这使得在视图层(如JSP)可以方便地访问延迟加载的属性,而...

    搭建SSH框架总结.doc

    首先,搭建SSH框架的基础环境是Eclipse集成开发环境以及对应的数据库连接Jar包。Eclipse作为开发工具,提供了丰富的插件支持,使得框架的搭建和管理变得更加便捷。对于数据库连接,需要根据实际项目需求选择相应的...

    configuration

    &lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class&gt; &lt;!--...--&gt; ``` 此过滤器保持一个打开的Hibernate Session直到视图渲染完成,确保了事务的一致性。 #### 6. ...

    SSH框架整合模版,非常详细实用

    在`web.xml`中,`OpenSessionInViewFilter`是一个用于解决懒加载异常的关键配置,它确保在用户请求的整个生命周期内,Hibernate Session保持打开状态。`sessionFactoryBeanName`参数关联到Spring配置中的...

    S2SH集成 案例

    这个案例提供了一个基础的登录功能,同时展示了S2SH集成的各个方面,包括OpenSessionInViewFilter的使用、声明式事务管理以及三层架构的设计。 首先,让我们从Struts2开始。Struts2作为控制层,负责处理HTTP请求,...

    JavaEE技术面试常见问题.doc

    例如,可以用汽车的例子来理解这些概念:汽车可以视为一个类,其中包含了各种属性(如颜色、型号等),并通过不同的方法实现其功能(如启动、加速等)。 2. **对象实例化方式及区别** - **使用构造函数**:最...

    ssh2开发步骤与项目实践宝典

    2. **Hibernate配置**:使用`OpenSessionInViewFilter`过滤器,该过滤器使得Hibernate在HTTP请求的生命周期内保持一个数据库会话,解决了懒加载(Lazy Loading)时可能出现的错误。`hibernateFilter`将这个过滤器...

    spring面试题大全.doc

    对于OpenSessionInView模式,可以通过`OpenSessionInViewFilter`或`OpenSessionInViewInterceptor`来处理事务和会话范围的问题。 5. **Spring事务管理**: - **TransactionDefinition**:定义事务的属性,如隔离...

    spring面试题

    在面试中,除了理解这些基础知识,还要能结合实际项目经验,讨论如何在实际开发中应用这些概念,以及遇到的问题和解决方案。同时,了解 Spring Boot、Spring Cloud 等扩展框架也是提升面试竞争力的关键。

    Spring学习笔记

    总结来说,这篇笔记深入浅出地讲解了Spring框架的基础知识,包括面向接口编程的原则、IOC和DI的原理与应用、AOP的使用,以及Spring与其他框架的整合,对于学习和理解Spring框架具有很高的参考价值。

Global site tag (gtag.js) - Google Analytics