三大框架-Hibernate
概念 持久化框架 把对象保存到数据库中,对数据的CURD操作
ORM框架 ORM对象关系映射 类<->表
属性<->字段
对象<->表中的记录
实现方法 创建持久化类
描述映射关系 对象关系映射文件,使用注解
环境搭建 安装 eclipse 的 HiberTools 插件 带有配置文件的向导
支持正项工程和反向工程
在项目中引入 Hibernate 的 jar 包
在项目中引入数据库驱动的 jar 包
配置文件 默认名 hibernate.cfg.xml
放在src目录下
根节点<hibernate-configuration>
子节点 <session-factory> 数据库连接
<property name="属性名">属性值</property>
hibernate.connection.driver_class 数据库驱动类属性
hibernate.connection.password 数据库密码
hibernate.connection.url 数据库连接
hibernate.connection.username 数据用户名
hibernate.default_schema 数据库方案,只针对oracle(配置为全大写的用户名)
hibernate.dialect 数据库方言 (org.hibernate.dialect.Oracle10gDialect)
调试选项 hibernate.show_sql 是否显示SQL语句
hibernate.format_sql 是否格式化SQL语句
自动建表方式 hibernate.hbm2ddl.auto update(表不存在就创建新表)
(增加属性就增加字段)
(减少属性不减少字段)
create(先删表和序列,重新创建)
(是用于重新初始化系统)
creat-drop(先删除表和序列,
重新创建,用完之后删除)
validate(检查映射关系和表是否一直)
(不一直就报错)
<mapping resource="包名/映射文件名.hbm.xml"/>
注册映射文件
API Configuration 管理和加载配置信息
默认加载 hibernate.cfg.xml
new Configuration().configure()
ServiceRegistry 4.0之后新增,所有基于 hibernate 的配置或服务都必须向其注册才能生效
ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
SessionFactory 生成 session 的类,相当于数据库连接
比较耗资源,一般一个应用创建一个
SessionFactory sf = cfg.buildSessionFactory(sr);
session 和数据库交互操作的单线程对象
管理所有持久化类的实例
Session se = sf.openSession();
Transaction 相当于数据库事务的概念
Transaction ts = se.beginTransaction();
所有持久化操作包括查询,都必须放在事务中进行
ts.commit(); 提交事务
ts.rollback(); 回滚事务
ORM 持久化类 实体类(符合pojo结构)
必须有无参的构造方法(用来反射)
提供一个表示属性(用来对应主键字段)
不能使final类 如果是final累就不能使用load()进行延迟加载
映射文件 一般持久化类对应一个映射文件
一般命名方式是 类名.hbm.xml
根节点<hibernate-mapping> <class name="持久化类全路径" table="表名">
<property name="属性名" type="数据类型">
<column name="字段名" />
</property>
class的属性 id标签(主键用这个标签) column同property标签
generator class=“”(主键生成策略)
(assigned 自然主键,由程序负责定义)
(odentity 数据库自动增长,要求底层数据库支持自动增长字段,数据类型要为整形)
(sequence 序列,要求底层数据库支持序列,数据库类型要为整形)
(hilo 适合所有数据库-需要在数据库中建表保存计算次数,按照high/low算法生成随机数,数据类型要为整形)
(native 根据底层数据库类型自动选择上面三种之一,适用于跨平台项目开发,数据类型必须是整形)
(guid 全局唯一标示,和数据库平台无关,数据库类型要为字符串类型)
property标签 name=“属性名”
length=“长度”
not-null=“是否为空” (true为空,false非空)
sql-type=“数据库的数据类型”
unique=“唯一约束”
default=“默认值”
多对一
<many-to-one name="属性名" class=“持久化类的全路径”> column同property标签 通过字段的值查找对应的主键表的数据
一对多(和多对一不能同时配置)
<set name="属性名" table="表名" inverse="true">
<key>
<column name="TNO"></column>
<key>
<one-to-many class="持久化类的全路径" />
set内的属性 inverse="true"反转控制方向可以提高效率
级联操作类型cascade= none 默认不级联
delete 级联删除
save-update 级联保存和更新
all 级联全部操作
session get(持久化类.class,主键值) 立即加载数据,加载前检查一级缓存,如果数据不存在就返回空
load(持久化类.class.主键值) 延时加载数据,当使用时才加载,加载前检查一级缓存,如果数据不存在就抛出异常,要求持久化类是非final类
状态 持久化状态 get()或load()调用之后得到的实例
通过save(),update(),saveorupdate()调用之后
临时状态 实例化之后,save之前是临时状态
删除状态 delete()之后是删除状态
游离状态 关闭了session之后是游离状态
save(持久化类的实例) 添加数据到数据库,并把实例转为持久化状态,会根据主键策略生成策略覆盖OID的属性
update(持久化类的实例) 执行数据修改,如果持久化状态的实例属性发生变化,事务在提交前自动执行update
saveOrUpdate(持久化类的实例) 根据OID属性是否为空自动执行save或update方法
delete(持久化类的实例) 执行删除,使实例进入删除状态
HQL 一种面向对象的查询语言 类似SQL查询语句,基于持久化类实现查询,类名和属性名严格区分大小写
Query 负责执行HQL查询的类(支持方法链调用)
方法 1.创建 Query qu = session的实例.createQuery("HQL语句")
2.条件参数设置 (?占位符 setXXX(位置索引从0开始,值))(:参数名 setXXX(参数名,值))
3.得到查询数据集合Lise(返回List<持久化类名>)
分页查询 setFirstResult(开始行号)(默认开始行号从0开始)
每页的开始行号=页码-1*每页行数
分组和聚合函数 使用List<Object>或List<Object[]>接收数据集合(根据查询结果选择)
反向工程 表要有主键(最好是单主键)
步骤 1.创建Hibernate Console Configuration 目的只创建数据库连接,一般是选择项目的hintrnate.cfg.xml获取连接信息
2.创建反向配置文件Hibernate.reveng 目的是确定要反向的表
3.配置CodeGeneration并运行 链接数据库的Console Configuration
反向配置文件.reveng.xml
输出的项目目录 一般是项目的SRC目录
要生成的包名
要导出的文件类型 持久化类 和 映射文件
4.检查生成的结果 检查持久化类
检查映射文件 一对多和多对一只能同时存在一个
5.把映射文件注册到主配置文件中
三大框架-Hibernate的更多相关文章
- java 三大框架 hibernate部分知识实现增删该查操作
1.三层架构 表现层 web层(MVC是一个表现层的设计模型) 业务层 service层 持久层 dao层2.三大框架和三层架构的关系(建议学习三大框架的顺序:先学习hibernat ...
- java 的 struts2 Spring Hibernate 三大框架的整合
原理就不说了,直接上配置文件及代码,用来备用 首先,将三大框架所需要的jar包导入项目中 导入 struts2-spring-plugin-2.3.3.jar包 此包的作用是作为struts2 与 ...
- Struts,spring,hibernate三大框架的面试
Struts,spring,hibernate三大框架的面试 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3 ...
- 三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板
最近在学SSH三大框架的整合,在此对他们整合时相关配置文件做一简单的模板总结,方便以后复用! 首先是web.xml配置文件,这里面就配置一些简单的监听器.过滤器,包括spring核心配置文件appli ...
- Struts2+Spring+Hibernate 三大框架的合并集成
这次来看看Struts2+Spring+Hibernate三大框架的整合应用,主要是Spring和Hibernate框架的整合,因为前边已经将Strtus2+Spring整合过了基本一样. 首先看一 ...
- 三大框架:Struts+Hibernate+Spring
三大框架:Struts+Hibernate+Spring Java三大框架主要用来做WEN应用. Struts主要负责表示层的显示 Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作 ...
- 2018.11.11 Java的 三大框架:Struts+Hibernate+Spring
·定义:Java三大框架主要用来做WEN应用.Struts主要负责表示层的显示: Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作): Hibernate主要是数据持久化到数据库. ...
- 详谈Struts+Hibernate+Spring三大框架
前言:对于JAVA WEB端的程序员来说,对JAVA三大框架:Struts+Hibernate+Spring的了解必不可缺,下面详细谈谈 Java三大框架主要用来做WEN应用. 三大框架:Struts ...
- JavaWeb_(SSH)三大框架整合struts+hibernate+spring_Demo
三大框架整合 一.SSH导包 二.书写Spring 三.书写Struts 四.整合Spring与Struts 五.书写(与整合)Hibernate.引入c3p0连接池并使用hibernate模板 六. ...
随机推荐
- 【BZOJ】2154: Crash的数字表格
http://www.lydsy.com/JudgeOnline/problem.php?id=2154 题意:求$\sum_{i=1}^{n} \sum_{j=1}^{m} lcm(i, j)$, ...
- Cortex-M0(NXP LPC11C14)启动代码分析
作者:刘老师,华清远见嵌入式学院讲师. 启动代码的一般作用 1.堆和栈的初始化: 2.向量表定义: 3.地址重映射及中断向量表的转移: 4.初始化有特殊要求的断口: 5.处理器模式: 6.进入C应用程 ...
- SQL Server2008清空日志文件
USE[master] GO ALTER DATABASE mydbname SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE mydbname S ...
- docker WARNING: bridge-nf-call-iptables is disabled 处理
在CentOS中 vim /etc/sysctl.conf net.bridge.bridge-nf-call-ip6tables = net.bridge.bridge-nf-call-iptabl ...
- SpringMVC原理和框架
SpringMVC工作原理 在上一篇章[spring]01_环境配置 中,我们演示了一个简单的HelloWorld工程. 本篇章重点讲述SpringMVC的基本工作原理,让大家进一步加深认识. 工作流 ...
- linux下获取本机IP
转载:http://blog.chinaunix.net/uid-20593763-id-1620213.html 源代码级Unix/Linux 通用网卡IP地址获取方法 在Unix和Linux系统下 ...
- JQuery基本方法介绍和使用
1.属性 $("p").addClass(css中定义的样式类型); 给某个元素添加样式 常用于表格鼠标移动效果 $(document).ready(function(){ //& ...
- c#面向对象基础 封装、继承
一.封装 这是一种隐藏的特性.可以用一个公式来展示类的封装特性: 封装的类=数据 + 对此数据进行的操作(即算法) 通俗的说,封装就是:包起外界不必要知道的东西,只向外界展露可供展示的东西. 在面 ...
- error CS0016: 未能写入输出文件
win7 下解决办法: 1.打开C:\Windows ,找到 TEMP 文件夹 2. 进行权限设置,点击编辑,找到 IIS-User,勾选所有权限
- liunx系统计划任务管理(at/crond调度)
一.at命令 at命令格式at HH:MM YYYY-MM-DD 其中 HH(小时):MM(分钟) YYYY(年)-MM(月份)-DD(日) 启动atd进程 /etc/init.d/atd start ...