`
xiaozi7
  • 浏览: 891 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

Hibernate 笔记

阅读更多
第一讲
1 hibernate是基于ORM 对象关系映射
2 vo与po的区别:
Vo是储存值;po是持久化对象,与数据库的每条记录联系,有主键
3 hibernate必须的jar包共10个,分别是:
核心jar包:
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate3.jar
javassist-3.9.0.GA.jar
jta-1.1.jar
slf4j-api-1.5.8.jar
数据库连接jar包:classes12.jar
日志包:slf4j-api-1.6.0.jar  slf4j-nop-1.6.0.jar
4 流程
  ⑴配置hibernate主文件:.cfg.xml
Connection对应jdbc 相当于session对应hibernate
<property>中5个必须属性   +  1个显示 sql属性 =  6个属性
⑵测试session
⑶新建po
⑷建立po的xml关系文件:.hbm.xml
⑸主配置文件加入<mapping:resource=” ”>
⑹测试:增删改查 (例子 Student表)

第二讲
例子:Parent表  Child表
⑴单向一对多 one-to-many  :set集合
⑵多对一 many-to-one  :parent 对象
⑶lazy延迟加载
  True:开启 。Child中包含parId, 查询Child表的时候不会把Parent表查出来。
False:关闭。Child中包含parId,查询Child表的时候就已经把Parent表查询出来了。
在开启状态下,如果查询的数据找不到,报异常:LazyInitializationException
⑷cascade=”all”级联

第三讲
例子:Parent2表  Child2表
⑴双向一对多one-to-many :set集合
<inverse=”true”>(false的一端负责维护主表与从表的关系)
⑵多对一 many-to-one  :parent 对象
⑶IDE (必须写主键)

第四讲
1 sequence 自动生成主键
  <param name="sequence">qibanseq</param>(qibanseq为序列的名称)
2 数据库连接池
  在主配置文件中加入4个属性:
  connection.provider_class          hibernate.connection.datasource
hibernate.connection.pool_size     hibernate.c3p0.min_size
3 多对多
  例子:Student2表   Cource表   stu_cou中间表
  ⑴Student                       配置文件
Set cources = new HashSet();          <set  name=”cources” table=”stu_cou” cascade=”all”>
<key column=”STUID”></key>
     <many-to-many  class=”Cource” column=”COUID”/>
</set> 
  查询出一个学生学的课程。通过中间表中的STUID 可以找到COUID,通过COUID可以找到Cource表  
                         
  ⑵Cource                       配置文件
Set students = new HashSet();         <set  name=”students” table=”stu_cou” cascade=”all”>
<key column=”COUID”></key>
<many-to-many class=”Student” column=”STUID”/>
</set>
   查询学习本课程的有哪些学生。通过中间表的COUID 可以找到STUID,通过STUID可以找到Student表

第五讲

1一对一(公用一个主键)
例子:Student3表  StudentDetail表
  ⑴Student:private StudentDetail studentDetail
  配置文件:<one-to-one name=”studentdetail” class=”StudentDetail” lazy=”false”
cascade=”all” outer-join=”false” />
⑵StudentDetil:        private int stuId;      private Student student;
配置文件:<id>
<generator class=”foreign”>
<param name=”property”>student</param>
</generator>
<id/>
<one-to-one name=”student” class=”Student” lazy=”false”
cascade=”all” outer-join=”false”/>
  outer-join=”true”:
outer-join=”false”:
2 get/load
区别:⑴使用get找不到值时,返回null;使用load找不到值时,报ObjectNotFoundException
  ⑵get返回类;laod返回代理类;
代理类:
例子:接口Iperson 实现类proson 和smallproson 代理类ProxyPerson 测试Test 
⑶load方法可充分利用内部缓存及二级缓存的现有数据;get方法仅在二级缓存中查找,如没有发现数据,跳过二级缓存在sql中找数据。
3 自连接
  例子:Emp表
  Po                                 配置文件
Private Emp emp;                   <!-- 多对一 -->
                      <many-to-one name="emp"
class="Emp" column="MGR"/>

Private Set emps = new HashSet()     <!-- 一对多 -->
                    <set name="emps">
                              <key column="MGR"></key>
                               <one-to-many class="Emp"/>
                              </set>
单向一对多   双向一对多      多对一
一对一                       多对多
第六讲
1 cfg(configuration )  hbm (hibernate mapping) hql(hibernate query language) 等后缀名的缩写要知道全称(面试)
2 ⑴自由:和数据库没有联系
  ⑵持久化(瞬态):数据在往数据库中进行保存的那一瞬间状态。
  ⑶游离:数据已经保存在数据库中。
3 测试优先。
建立测试包:右击工程New –   Source  folder   --test
4
5 熟练操作IDE自动生成
6 hibernate查询
  ⑴Query 分页查询
setFirstResult()  setMaxResults()    从0开始取数据
setFetchSize():批量每次取数据
  ⑵属性查询
◇查询1列。查出的是集合。
◇查询多列。查出的是数组。
---------解决问题:查询1列,我们封装成对象---------
◇封装对象。Sql“new ”; 加构造器;
7截取字符串:  toString().subString(0,9)
第七讲
一 object   param   对象参数
1 object
⑴查询整张表
⑵查询一个属性 (2种写法)
⑶?:可以像使用preparedstatement一样去使用这个方法
  方法: .setString();
2 param
⑴ 一个param   格式::param               方法:.setParameter("param","");
⑵ 两个param   格式::param1 and :param2  方法:.setParameter("param1","");                                            .setParameter("param2","");
3对象参数
⑴ 新建param类    set属性    .setProperties(param类)
⑵ Map     .put属性     .setProperties(map)
二 外置sql
1查询整张表
⑴ 建立xml配置文件 <query >       ⑵主配置文件配置映射信息
⑶ 用   . getNamedQuery("a") 找到外置的sql
⑷ 也可以把配置文件和类的配置文件写在一起
2查询一个属性   .setString(0,””)
三 原生SQL
1查询整张表   ⑴ .createSQLQuery(hql)
四 连接
1 like  例:"from Dept d where d.dname like '%S%'"
2整除 例:"from Dept d where mod(d.deptno,3)=0"
原生sql:
3  upper      小写变大写: 例:" select UPPER(d.dname) from Dept d "
   lower     大写变小写   例:”select lower (d.danme)from Dept d”
4  distinct 取消重复行: 例:"select distinct d.loc from Dept d"
5  group by   分组:       例:"select d.loc from Dept d group by d.loc "
6  desc      降序     例:"select d.deptNo from Dept d order by d.deptNo desc"
7子查询    例:"select d.deptNo from Dept d where (select count(*) from d.emps )>4"
select d.deptno from dept d where (select count(*)from emp e where e.deptno =d.deptno)>4
8连接
⑴全连      例:”from Dept d join d.emps”
⑵左连接(返回数组)    例:from Dept d left outer join d.emps
⑶fetch  (返回对象 )   例:from Dept d left outer join fetch d.emps
9 过程
⑴ 数据库创建函数 传参数
⑵ 配置文件:<sql-query  name="getsql"  callable="true" > 
1 调用数据库中的函数{? = call 数据库中的函数名(?)}     第一个?是返回一条记录
2 把一条记录封装成对象
⑶ 测试   1 .getNamedQuery("getsql") 根据名字找到sql    
2 .setInteger()传参数
第八讲
一HQL
1 工程名单击右键—MyEclipse—Open HQL Editor (前提:自动生成IDE)
二延迟加载
1 实体默认的lazy为“true”;  集合set默认的lazy为“true”
  属性默认的lazy为“false”
2 测试
  ⑴ 测试优先
  ⑵ 工程右键—new Source Folder—test
  ⑶ jar包:Add Library—JUnit—JUnit 4
  ⑷ 版本:1.5   注解:@Test   不执行该方法://@Test
  ⑸ 断点(调试Debug)
F6单步执行
返回对象 值不存在 延迟加载 查找数据
get 本类 null 不能开启 仅在二级缓存中查找,如没有发现数据,跳过二级缓存在sql中找数据
load 代理对象 ObjectNotFoundException 能开启(true)
1 利用内部缓存及二级缓存的现有数据

代理类:静态    动态(jdk:接口  cglib)
      ⑹ ???
分享到:
评论

相关推荐

    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 的核心概念、配置、实体映射、查询语言及缓存机制。 1. **核心概念** - **对象关系映射(ORM)**: Hibernate 提供了一种桥梁,将 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