三大框架-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模板 六. ...
随机推荐
- C#图片处理---基础
简单的图片剪裁 using System; using System.Drawing; using System.Drawing.Drawing2D; using System.IO; namespa ...
- Qt Load and Save Image Dialog 加载图片对话框
在Qt中,我们想要通过对话框来打开某一个图片,可以通过使用QFileDialog来快速实现,参见以下代码: QString fileName = QFileDialog::getOpenFileNam ...
- mysql双主复制总结
双主复制: 1).在两台服务器上各自建立一个具有复制权限的用户: 2).修改配置文件: # 主服务器A上 [mysqld] server-id = 10 log-bin = mysql-bin rel ...
- 关于mysql(或MariaDB)中的用户账号格式
之前在修改数据库本地root用户密码时,发现我远程连接的root用户的密码并没有改变,之后查了一下,发现原来这两个root不是同一个用户(汗..) 于是联想到之前配置数据库每次给用户赋予远程连接权限时 ...
- webapp 侧边导航效果
@media (max-width: 767px) .main-sidebar, .left-side { -webkit-transform: translate(-230px, 0); -ms-t ...
- javascript平时小例子①(移动的小div)
css样式: #box{ width: 300px; height: 300px; background: deepskyblue; position: absolute; margin-right: ...
- yum install maven
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos ...
- linux同步系统时间
命令:ntpdate 路径:/usr/sbin/ntpdate 例子:ntpdate us.pool.ntp.org 查看日期时间命令:date 修改日期时间命令:date -s "2012 ...
- PNG格式的图像文件,创建的图像的MIME类型的头部
在安装完这三个组件后,还需要重新配置一次PHP,这也是你对采用DSO方式安装PHP感到庆幸的地方之一.运行make clean,然后在当前的配置中添加下面的内容: --with-gd=[/path/t ...
- HTML中id、name、class 区别
参考:http://www.cnblogs.com/polk6/archive////.html http://blog.csdn.net/ithomer/article/details/ HTML ...