0

0

Hibernate大复习

php中文网

php中文网

发布时间:2016-06-07 16:10:47

|

1209人浏览过

|

来源于php中文网

原创

/* 1.Hibernate的体系结构 2.Hibernate API体系 *********************************************************************************************************************************************************************************************** Hib

/*
1.Hibernate的体系结构
2.Hibernate API体系
***********************************************************************************************************************************************************************************************


Hibernate API总结
名称 描述
Configuration类 负责配置和启动Hibernate,创建SessionFactory实例


SessionFactory接口 负责初始化Hibernate,创建Session实例,充当数据源代理,一个SessionFactory实例对应一个数据源,由于SessionFactory需要自己缓存
消耗的资源比较大,因此,当应用中只有一个数据源时,最好只创建一个SessionFactory对象实例,除非有多个数据源,才分别为每个数据源创建一个SessionFactory对象实例
Session接口 负责保存,更新,删除,加载和查询持久化对象,充当持久化管理器

Transaction接口 对底层的事务进行了封装,充当了事务管理器

Query接口,Criteria接口 执行数据库查询,充当Hibernate的查询器


***************************************************************************************************************************************************************************************************
Hibernate Web应用的开发步骤:
(1)创建数据源
(2)将Hibernate所需的JAR包复制到WEB-INF/lib下
(3)创建Hibernate配置文件
(4)利用Hibernate的第三方工具或Eclipse插件从数据库中创建出相应的实体对象其ORM映射文件
(5)创建Hibernate的SessionFactory类型
(6)通过SessionFactory对象创建Session实例
(7)通过创建Session实例进行持久化对象的管理
(8)通过创建Transaction实例进行事务管理
(9)通过创建Query或者Criteria实例实现数据库的查询


3.配置Hibernate
配置Hibernate主要就是创建Hibernate配置文件和SessionFactory类,Hibernate的配置文件可以是hibernate.properties或者
hibernate.cfg.xml(两者取其一),Hibernate.cfg.xml配置首选


































配置好hibernate.cfg.xml后,推荐保存在WEB-INF/classes下,接下来就可以创建SessionFactory了
package com.hephec.orm;


import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;


public class MySessionFactory{
//定义一个静态字符串变量存放Hibernate的配置文件名
private static String CONFIG_FILE_LOCATION="/hibernate.cfg.xml";
//创建一个线程局部变量对象
private static final ThreadLocal threadLocal=newThreadLocal();
//创建一个静态的Configuration对象
private static final Configuration cfg=new Configuration();
//定义一个静态的SessionFactory对象
private static org.hibernate.SessionFactory sessionFactory;
//取得一个当前的Session对象
private static Session currentSession() throws HibernateException{
Session session=(Session)threadLocal.get();
if(session==null){
if(sessionFactory==null){
try{
//根据配置文件,配置Hibernate
cfg.config(CONFIG_FILE_LOCATION);
//通过Configuration对象创建SessionFactory对象
SessionFactory=cfg.buildSessionFactory();
}
catch(Exeption e){
System.out.println("系统错误创建SessionFactory对象出错!");
e.printStackTrace();
}
}
//通过SessionFactory对象创建Session对象
session=sessionFactory.openSession();
threadLocal.set(session);


}
return session;
}
//关闭一个Session对象
public static void closeSession()throws HibernateException(){
Session session=(Session)threadLoal.get();
threadLocal.set(null);
if(session!=null){
session.close();
}
}
//构造方法
public MySessionFactory(){
}
}


调用Hibernate API 进行持久化操作
package com.hephec.service;


import org.hibernate.*;
import java.util.*;
import com.hephec.orm;


public class SystemPart{
//用户验证
public boolean userCheck(String loginName,String loginPass) throws Exception{
//创建一个Session对象
Session session=MySessionFactory.currentSession();
//定义一个Transaction对象
Transaction tx=null;
try{
List result=null;
//创建一个Query查询对象
Query query=session.createQuery("select a from Admin as a where a.username=:loginName and a.loginPass=:loginPass");
//设置查询参数值
query.setString("loginName",loginName);
query.setString("loginPass",loginPass);
//创建一个Transaction对象
Transaction tx=session.beginTransaction();
//执行查询,得到查询结果
result=query.list();
tx.commit();
if(result.size()>0)return true;
else return false;
catch(Exception e){
//事务回滚
if(tx!=null){
tx.rollback();
}
System.out.println("系统错误!");
e.printStackTrace();
return false;
}finally{
//关闭Session对象
session.close();
}
}
}


4.Hibernate映射配置文件






5.Hibernate会话管理
*/




/*
Hibernate的映射机制
1.Hibernate基本映射数据类型
2.Hibernate的主键映射
3.Hibernate的实体映射
4.映射一对一关联关系
5.映射多对一的单向关联关系
6.映射一对多的双向关联关系
7.映射一对多双向自身关联关系
8.映射多对多单向关联关系
9.映射多对多双向关联关系
10.映射组成关系
11.映射继承关系
12.Hibernate映射集合
*/


/*
使用Session的beginTransction()方法
使用Session的close()方法
使用Session的connection()方法
使用Session的delete()方法
使用Session的get()方法
使用Session的load()方法
使用Session的update()方法
使用Session的saveOrUpdate()方法
使用Hibernate的isInitalized()与initialize()方法
持久化对象的级联操作
*/


/*
Hibernate的检索策略
1.立即检索
2.延迟检索
3.迫切左外连接检索
*/


/*
HQL查询方法
1.基本查询
2.条件查询
3.分页查询
4.连接查询
5.子查询
6.动态实例化查询结果
*/


/*
QBC查询方式
1.基本查询
2.QBE查询
3.分页查询
4.复合查询
5.离线查询
*/


/*
本地SQL查询
*/


/*
Hibernate批量操作
1.批量插入
2.批量更新
3.批量删除
*/


/*
Hibernate的事务管理
1.事务边界声明
2.并发控制
3.悲观锁
4.乐观锁
*/


/*
Hibernate缓存机制
1.Hibernate的缓存分类
2.Hibernate的缓存范围
3.Hibernate的缓存管理
4.Hibernate二级缓存的并发访问策略
5.Hibernate的二级缓存配置
*/


/*
Hibernate应用的性能优化
*/


/*
多数据源的应用
*/


/*
JDBC应用
*/


/*
Hibernate调用存储过程
*/


/*
XML数据持久化
*/










































































热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

48

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

44

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

37

2026.02.28

Golang 并发编程模型与工程实践:从语言特性到系统性能
Golang 并发编程模型与工程实践:从语言特性到系统性能

本专题系统讲解 Golang 并发编程模型,从语言级特性出发,深入理解 goroutine、channel 与调度机制。结合工程实践,分析并发设计模式、性能瓶颈与资源控制策略,帮助将并发能力有效转化为稳定、可扩展的系统性能优势。

22

2026.02.27

Golang 高级特性与最佳实践:提升代码艺术
Golang 高级特性与最佳实践:提升代码艺术

本专题深入剖析 Golang 的高级特性与工程级最佳实践,涵盖并发模型、内存管理、接口设计与错误处理策略。通过真实场景与代码对比,引导从“可运行”走向“高质量”,帮助构建高性能、可扩展、易维护的优雅 Go 代码体系。

19

2026.02.27

Golang 测试与调试专题:确保代码可靠性
Golang 测试与调试专题:确保代码可靠性

本专题聚焦 Golang 的测试与调试体系,系统讲解单元测试、表驱动测试、基准测试与覆盖率分析方法,并深入剖析调试工具与常见问题定位思路。通过实践示例,引导建立可验证、可回归的工程习惯,从而持续提升代码可靠性与可维护性。

3

2026.02.27

漫蛙app官网链接入口
漫蛙app官网链接入口

漫蛙App官网提供多条稳定入口,包括 https://manwa.me、https

268

2026.02.27

deepseek在线提问
deepseek在线提问

本合集汇总了DeepSeek在线提问技巧与免登录使用入口,助你快速上手AI对话、写作、分析等功能。阅读专题下面的文章了解更多详细内容。

51

2026.02.27

AO3官网直接进入
AO3官网直接进入

AO3官网最新入口合集,汇总2026年可用官方及镜像链接,助你快速稳定访问Archive of Our Own平台。阅读专题下面的文章了解更多详细内容。

430

2026.02.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 12.5万人学习

CSS3 教程
CSS3 教程

共18课时 | 6.4万人学习

Rust 教程
Rust 教程

共28课时 | 6.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号