Hibernate常用查询与CUD操作详解
需积分: 50 177 浏览量
更新于2024-09-10
收藏 102KB DOC 举报
Hibernate是一种流行的Java ORM框架,用于简化与关系数据库的交互,特别是在Java应用程序中。本文档将详细介绍作者基于个人经验所分享的Hibernate常用API,特别是针对查询和CUD(Create, Update, Delete)操作,这些在实际开发中至关重要。
首先,作者假设我们有两个关联实体:Member和UserInfo。Member表包含了用户的登录代码(loginCode)、密码(password)等信息,其主键(id)自动生成,且与UserInfo表通过外键关联。UserInfo表则存储用户的基本信息,如姓名(name)、编码(code)、生日(birthday)、地址(address)、创建时间(createTime)以及一个删除标志(deleteFlag),还包含一个Member集合,表示一个用户可以关联多个会员信息。
1. **查询功能**:
Hibernate提供了多种查询方式,以适应不同场景。其中,最基础的是使用HQL(Hibernate Query Language)进行数据库查询。HQL是一种面向对象的查询语言,能够跨数据库平台编写统一的SQL语法。例如,要执行一个简单的查询,你可以创建一个Query对象,如`getSession().createQuery("FROM Member")`,这将返回一个结果集,包含了Member表中的所有记录。
1-1 **HQL查询示例**:
使用HQL的一个例子是执行`SELECT * FROM Member`,这将返回Member表中的所有列。HQL允许我们更精确地筛选和排序数据,比如`SELECT m FROM Member m WHERE m.loginCode = :loginCode`,这样可以根据loginCode查找特定的成员。
2. **CUD操作**:
- **Create(创建)**:在Hibernate中,使用Session的save()方法可以保存一个新的对象到数据库,如`session.save(new Member(loginCode, password))`。如果对象已经存在,Hibernate会自动检测并更新对应的记录,而不是插入新行。
- **Update(更新)**:使用update()方法更新已有对象,如`session.update(member)`,这里的`member`对象的属性已经被修改,会在数据库中反映出来。
- **Delete(删除)**:使用delete()方法删除对象,如`session.delete(member)`,前提是要确保对象的状态为管理状态(即已被Session管理)。
3. **一对多和一对一关联**:
在Member和UserInfo的例子中,Member有一个ManyToOne关联,表示一个Member关联一个UserInfo。当保存Member时,Hibernate会自动处理Userinfo对象的关联,确保外键引用正确。同样,如果在UserInfo中修改了与Member的关联,也会影响到Member对象。
4. **事务管理**:
Hibernate支持事务管理,使用Transaction接口或注解(如@Transactional)来控制数据库操作的原子性。在完成一组相关的操作后,可以提交事务(session.getTransaction().commit())以持久化更改,或者回滚(session.getTransaction().rollback())以撤销未完成的操作。
这个文档详细介绍了Hibernate在日常开发中常用的API,包括查询和基本的CRUD操作,以及如何处理对象之间的关联。熟练掌握这些API有助于提高开发效率和数据库操作的灵活性。
2017-09-12 上传
2012-02-16 上传
2022-11-05 上传
2008-12-04 上传
2012-05-14 上传
2012-03-16 上传
2022-06-09 上传
2012-10-10 上传
随身蓝
- 粉丝: 4
- 资源: 1
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能