第一讲
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》所提及的关键知识点前,我们先来解析一下标题和描述中的核心概念。“自上而下的依赖,单向依赖,层与层之间最好依赖抽象”,这一描述实际上触及了软件架构设计中的关键原则,特别是...
《韩顺平.2011版.hibernate笔记》是一份针对Hibernate框架的详细学习资料,由知名IT讲师韩顺平在2011年编撰而成。Hibernate是Java开发领域中广泛使用的对象关系映射(ORM)框架,它极大地简化了数据库操作,使开发者...
【传智播客 Hibernate 笔记】是一份深入学习 Hibernate ORM 框架的资源集合,包括了 word 笔记、pdf 讲义、源代码以及相关分析图表和 jar 包,旨在帮助开发者全面理解并掌握 Hibernate 的核心概念与实际应用。...
《Hibernate笔记完整版》 在Web开发领域,Hibernate作为三大框架之一,扮演着至关重要的角色。本文将全面介绍Hibernate,包括其数据持久化的概念、优缺点对比,以及Hibernate的核心概念和编程步骤。 对象持久化是...
《韩顺平Hibernate笔记》是一份详尽记录了著名IT讲师韩顺平关于Hibernate框架讲解内容的资料集合。Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更加专注于...
《韩顺平Hibernate笔记》是一份详尽的关于Hibernate框架的学习资料,由知名IT教育专家韩顺平编撰。Hibernate是Java开发中的一个强大的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互,使得开发者可以...
本笔记将深入探讨 Hibernate 的核心概念、配置、实体映射、查询语言及缓存机制。 1. **核心概念** - **对象关系映射(ORM)**: Hibernate 提供了一种桥梁,将 Java 对象与数据库中的记录关联起来,使得开发者可以...
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库。这个框架将数据库操作转化为对Java对象的操作,简化了数据持久化的复杂度。以下是对Hibernate的一些关键知识点的...
### 尚学堂Hibernate笔记知识点详解 #### 一、项目初始化与环境搭建 1. **新建项目**:在IDE中创建一个新的Java项目。 2. **构建用户库并添加所需的JAR包**: - 右键点击项目 -> `Build Path` -> `Configure ...
培训期间的hibernate笔记 hibernate笔记 达内培训
hibernate笔记.pdf
总结起来,"韩顺平hibernate笔记及图解"涵盖了Hibernate的基础概念、核心组件、对象关系映射、查询机制、事务管理以及实体间的关系等内容。通过学习这份笔记,开发者能深入理解Hibernate的工作原理和使用技巧,提升...
【Spring+Hibernate笔记】这篇文档主要涵盖了在Web开发中使用Spring和Hibernate的基础知识。首先,我们从Spring的Hello World开始,了解如何配置JSP运行环境。 1.1. 配置JSP运行环境是开发Web应用的第一步。这包括...
【马士兵Hibernate笔记】是一份面向初学者的教程,旨在帮助读者深入了解Hibernate这一持久化框架。Hibernate是一个基于Java的ORM(对象关系映射)工具,它允许开发者将数据库操作转换为面向对象的方式,从而简化了...