`
liushu1234
  • 浏览: 10468 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

hibernate笔记

阅读更多
1, hibernate中有自动的级联删除,在表定义的xml文件中有cascade属性

2, hibernate实现的链接查询默认是在使用的时候才进行的,例如查询到user下面的customer属性,只有用到user.customer.name时hibernate才会执行数据的查询。

3,hibernate的配置文件中的hbm2ddl.auto属性表示在执行程序时对数据库模式是采取更新还是采取创建模式。

4,HQL语言是面向对象的查询,和SQL类似,但面向的是已经定义好的实体bean。from语句后不是跟的表明,而是对象名。

5,hibernate也可以使用存储过程,只是麻烦了点,自己没实现过。要在配置文件中和配置sql查询语句类似的配置一下,再把callable属性设为TRUE。

6.hibernateTemplate中的属性若为null,则bean中各种属性的类型可设为对象型。例如int为Integer,date为Date型。以免出现空置时会引发异常。

7.hibeernate中的many-to-one属性中也有lazy属性。现在还没研究清楚,但是若不设置lazy=FALSE则不能取出子属性中的数据。

8.在父对象的class属性上设置lazy=true。则子对象查询时不会将父对象查询出来。但是lazy是在session范围内有效。若session关闭,则不能取出子对象,会报lazyinitialize的错误。

9.解决spring和hibernate集成时的lazy属性使用方法
  在HIbernateTemplate中我们可以看到一个核心的方法:
public Object execute(HibernateCallback action, boolean exposeNativeSession)         throws DataAccessException {     …………     ………… 其中finally的定义为  finally {      …………   else {    // Never use deferred close for an explicitly new Session.    if (isAlwaysUseNewSession()) {     SessionFactoryUtils.closeSession(session);    }    else {     SessionFactoryUtils.closeSessionOrRegisterDeferredClose(session, getSessionFactory());    } 从这里我们可以看到如果isAlwaysUseNewSession()为true的话,session将会在方法执行完之后关闭,那么我们知道 它的find(String ...)在调用CallBack的时候是这样实现的:  execute(new HibernateCallBack(){...},true);  因此,如果我们使用@OneToMany的话,设置FeatchType.LAZY在调用One.getMany()欲返回集合的话,会因为session 关闭而出现错误,当然知道了这一点解决起来就比较的简单了:  我们可以使用getHibernateTemplate().execute(new HibernateCallBack(){});因为在HibernateTemplate中 exposeNativeSession的默认值为false,当然,如果不放心的话,可以显式的调用:    execute(new HibernateCallBack(){},false);

  若是在web项目中,则可以在web.xml中加入
  <filter>

       <filter-name>hibernateFilter</filter-name>

       <filter-class>

           org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

       </filter-class>

    </filter>

    <filter-mapping>

       <filter-name>hibernateFilter</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>
   加入此拦截器后,spring会将lazy属性的子类的id存放在一个handler中,需要的时候再查询出来。
0
0
分享到:
评论

相关推荐

    hibernate笔记.txt

    在深入探讨《hibernate笔记.txt》所提及的关键知识点前,我们先来解析一下标题和描述中的核心概念。“自上而下的依赖,单向依赖,层与层之间最好依赖抽象”,这一描述实际上触及了软件架构设计中的关键原则,特别是...

    韩顺平.2011版.hibernate笔记.zip

    《韩顺平.2011版.hibernate笔记》是一份针对Hibernate框架的详细学习资料,由知名IT讲师韩顺平在2011年编撰而成。Hibernate是Java开发领域中广泛使用的对象关系映射(ORM)框架,它极大地简化了数据库操作,使开发者...

    传智播客 hibernate笔记(word+pdf+源码)

    【传智播客 Hibernate 笔记】是一份深入学习 Hibernate ORM 框架的资源集合,包括了 word 笔记、pdf 讲义、源代码以及相关分析图表和 jar 包,旨在帮助开发者全面理解并掌握 Hibernate 的核心概念与实际应用。...

    Hibernate笔记完整版

    《Hibernate笔记完整版》 在Web开发领域,Hibernate作为三大框架之一,扮演着至关重要的角色。本文将全面介绍Hibernate,包括其数据持久化的概念、优缺点对比,以及Hibernate的核心概念和编程步骤。 对象持久化是...

    韩顺平hibernate笔记

    《韩顺平Hibernate笔记》是一份详尽记录了著名IT讲师韩顺平关于Hibernate框架讲解内容的资料集合。Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更加专注于...

    韩顺平Hibernate笔记

    《韩顺平Hibernate笔记》是一份详尽的关于Hibernate框架的学习资料,由知名IT教育专家韩顺平编撰。Hibernate是Java开发中的一个强大的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互,使得开发者可以...

    Hibernate,hibernate笔记

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库。这个框架将数据库操作转化为对Java对象的操作,简化了数据持久化的复杂度。以下是对Hibernate的一些关键知识点的...

    尚学堂hibernate笔记

    ### 尚学堂Hibernate笔记知识点详解 #### 一、项目初始化与环境搭建 1. **新建项目**:在IDE中创建一个新的Java项目。 2. **构建用户库并添加所需的JAR包**: - 右键点击项目 -&gt; `Build Path` -&gt; `Configure ...

    Hibernate笔记

    培训期间的hibernate笔记 hibernate笔记 达内培训

    hibernate笔记.pdf

    hibernate笔记.pdf

    韩顺平hibernate笔记及图解

    总结起来,"韩顺平hibernate笔记及图解"涵盖了Hibernate的基础概念、核心组件、对象关系映射、查询机制、事务管理以及实体间的关系等内容。通过学习这份笔记,开发者能深入理解Hibernate的工作原理和使用技巧,提升...

    Spring+Hibernate笔记

    【Spring+Hibernate笔记】这篇文档主要涵盖了在Web开发中使用Spring和Hibernate的基础知识。首先,我们从Spring的Hello World开始,了解如何配置JSP运行环境。 1.1. 配置JSP运行环境是开发Web应用的第一步。这包括...

    马士兵hibernate笔记

    【马士兵Hibernate笔记】是一份面向初学者的教程,旨在帮助读者深入了解Hibernate这一持久化框架。Hibernate是一个基于Java的ORM(对象关系映射)工具,它允许开发者将数据库操作转换为面向对象的方式,从而简化了...

Global site tag (gtag.js) - Google Analytics