Hibernate增删改查操作(CRUD)
接下来,我们将介绍 Hibernate 是如何实现对数据库的增删改查(CRUD)操作的。
插入记录
Hibernate 在 Session 接口中为我们提供了一个 save() 方法,该方法可以向据库表中插入记录。1. 在测试类 MyTest 中,创建一个名称为 testInsert 的方法,代码如下。
/**
* 保存数据
*/
@Test
public void testInsert() {
//加载 Hibernate 核心配置文件
Configuration configuration = new Configuration().configure();
//创建一个 SessionFactory 用来获取 Session 连接对象
SessionFactory sessionFactory = configuration.buildSessionFactory();
//获取session 连接对象
Session session = sessionFactory.openSession();
//开始事务
Transaction transaction = session.beginTransaction();
//创建实体类对象
User user = new User();
user.setUserId("003");
user.setUserName("编程帮新增用户");
user.setPassword("654321");
user.setEmail("14234567@q网站站点" rel="nofollow" />
Hibernate:
insert
into
user
(user_id, user_name, password, email)
values
(?, ?, ?, ?)
新增数据的主键 id:3
3. 查询数据库 user 表中的数据,结果如下表。
id | user_id | user_name | password | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 001 | admin | admin | 12345678@q网站站点" rel="nofollow" /> /** * 修改记录 */ @Test public void testUpdate() { //加载 Hibernate 核心配置文件 Configuration configuration = new Configuration().configure(); //创建一个 SessionFactory 用来获取 Session 连接对象 SessionFactory sessionFactory = configuration.buildSessionFactory(); //获取session 连接对象 Session session = sessionFactory.openSession(); //开始事务 Transaction transaction = session.beginTransaction(); //创建实体对象 User user = new User(); user.setId(3); //设置需要修改的字段 user.setUserName("更新用户名"); //直接调用 update() 方法进行修改 session.update(user); //提交事务 transactio网站站点" rel="nofollow" /> Hibernate: update user set user_id=?, user_name=?, password=?, email=? where id=? 图1:直接使用 update() 方法修改记录 4. 修改 testUpdate() 方法的代码,采用“先查询再修改”的方式进行更新,代码如下。 /** * 修改记录 */ @Test public void testUpdate() { //加载 Hibernate 核心配置文件 Configuration configuration = new Configuration().configure(); //创建一个 SessionFactory 用来获取 Session 连接对象 SessionFactory sessionFactory = configuration.buildSessionFactory(); //获取session 连接对象 Session session = sessionFactory.openSession(); //开始事务 Transaction transaction = session.beginTransaction(); //现将需要修改的记录查询出来 User user = session.get(User.class, 3); //设置需要修改的字段 user.setUserName("更新用户名"); //直接调用 update() 方法进行修改 session.update(user); //提交事务 transactio网站站点" rel="nofollow" /> Hibernate: select user0_.id as id1_0_0_, user0_.user_id as user_id2_0_0_, user0_.user_name as user_nam3_0_0_, user0_.password as password4_0_0_, user0_.email as email5_0_0_ from user user0_ where user0_.id=? Hibernate: update user set user_id=?, user_name=?, password=?, email=? where id=? 6. 查询数据库 user 表中的数据,如下图。 ![]() 图2:先查询在修改 从上图可知,我们成功地使用 Hibernate 修改了 user 表中的一条记录。 删除记录 Hibernate 在 Session 接口中,为我们提供了一个 delete() 方法,该方法用于删除数据库表中的记录。1. 在 MyTest 类中,添加一个 testDelete() 方法,代码如下。
3. 查询数据 user 表中的数据,结果如下图。 ![]() 图3:删除记录 从上图可知,我们成功地使用 Hibernate 删除了 user 表中的一条记录。 查询数据 我们知道,Hibernate 通过 Session 接口提供的 get() 方法能够查询出一条指定的数据,但该方法无法查询多条或所有数库数据。Hibernate 为用户提供了以下 3 种查询方式,它们都可以用来查询多条数据。
HQL 查询 HQL 全称:Hibernate Query Language,它是一种面向对象的查询语言,它和 SQL 的语法相似,但 HQL 操作的是实体类对象及其中的属性,而不是数据库表中的字段。在 Hibernate 提供的各种检索方式中,HQL 是使用最广的一种检索方式。1. 在数据库中执行以下 SQL 语句,向 user 表中添加 3 条使用 163 邮箱的用户数据。
但 Hibernate5.2 之后,出于安全性考虑,这种方式已经基本废弃,现在 QBC 查询基本上都是使用 JPA(javax.persistence-api- x.jar)包中的 CriteriaBuilder(一个工厂类),来创建 CriteriaQuery 对象,以实现对数据库的操作。 QBC API 位于 javax.persistence.criteria 包中,主要包括以下接口:
使用 QBC 查询时,需要以下步骤:
CriteriaBuilder 接口提供了一系列设定查询条件的方法,这些方法都返回 Predicate 对象,常用的设定条件查询的方法如下表。
1. 在 MyTest 类中,添加一个 testQbcQuery() 方法,在该方法中,使用 QBC 查询 user 表中的所有使用 163 邮箱的用户数据,代码如下。
|