Hibernate入门(6):CRUD 增删改查
来源:互联网 发布:access数据库设计视图 编辑:程序博客网 时间:2024/06/06 20:45
Hibernate CRUD 增删改查
Hibernate 是一种 ORM 架构,对于数据库进行的 CRUD 操作都是建立在实体对象上的,这个区别于面向数据表关系的 JDBC ;
以下示例中使用的 HibernateUtil 类是一个封装的 Session 管理类,详见:HibernateUtil
查询操作 Retrieve
Hibernate 支持查询的方式主要有3种:
- HQL 查询:详见 http://blog.csdn.net/al_assad/article/details/77900663
- Criteria 条件查询;
- 原生 SQL 查询:详见http://blog.csdn.net/al_assad/article/details/77900678
HQL 是 Hibernate 的一种面向持久化实体的查询语言,区别于 SQL ;
Criteria 条件查询是一种完全面向对象的查询结构,使用类和方法的组织形式来取代 SQL 语言的组织形式,但是在 Hibernate5.x 版本中已经废弃了该种查询方式,仅保留作为向后兼容;
Hibernate 也支持原生的SQL查询,但是实际使用时,主要是用在项目的向后兼容,或者HQL无法解决过于复杂的关联查询的情况下,Hibernate官方是推荐使用 HQL 的方式进行查询;
一个简单的示例如下,详细内容参见以上的链接:
增加 Create
Hibernate 的数据插入直接通过将数据映射为实体实例进行的,如下示例:
更新 Update
类似于增加操作,hibernate的数据更新操作也是基于实体对象的,对获取到的实体对象的操作,会同步映射到数据中,这其中涉及到一些 hibernate 的缓存,可以参见 http://blog.csdn.net/al_assad/article/details/77900705
以下是一个简单的示例:
对于批量更新,除了直接面这映射的实体类进行操作外,hibernate还支持基于 HQL 的 DML风格的批量修改:
删除 Delete
hibernate 的数据删除操作也是基于实体对象的,但完成数据库到实体的映射之后,如果在Session删除该实体,那么数据表中相应的记录也会被删除;
以下是一个简单的示例:
对于批量删除,除了直接面对映射的实体类进行操作外,hibernate还支持基于 HQL 的 DML风格的批量删除:
※ 对于大数据量的 批量操作(批量更新,批量插入)可能遇到内存溢出的情况,这一部分的详细情况和解决方式参见 :http://blog.csdn.net/al_assad/article/details/77900705