Hibernate学习之对实体类的crud操作
程序员文章站
2024-01-03 19:37:34
...
1 前期准备
1.1 环境搭建
见Hibernate入门和基本操作篇环境搭建步骤。
应有以下内容:
User类中要生成相应的set、get和toString方法:
package cn.itcast.entity;
public class User {
private int uid;
private String username;
private String password;
private String address;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User [uid=" + uid + ", username=" + username + ", password="
+ password + ", address=" + address + "]";
}
}
1.2 创建工具类实现表的创建
package cn.itcast.utils;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtils {
private static Configuration configuration=null;
private static SessionFactory sessionFactory=null;
static{
configuration=new Configuration();
configuration.configure();
sessionFactory=configuration.buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static void main(String[] args){
}
}
运行工具类把表生成:(注意:要先建数据库)
1.3 创建测试类
测试类中写接下来的crud操作代码不要忘了导jar包,少了相应jar包就无法实现正常操作哦。jar包链接已经在入门篇贴上了。
2 crud操作实现
2.1添加
调用session里面的save方法实现添加数据操作:
package cn.itcast.hibernatetest;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import cn.itcast.entity.User;
import cn.itcast.utils.HibernateUtils;
public class HibernateDemo {
@Test
public void testAdd(){
//1 调用工具类得到SessionFactory
SessionFactory sessionFactory= HibernateUtils.getSessionFactory();
//2 获取session
//类似连接
Session session=sessionFactory.openSession();
// 3、开启事务
Transaction tx=session.beginTransaction();
// 4、写具体逻辑crud操作
//添加功能
User user=new User();
user.setUsername("大黄");
user.setPassword("7788");
user.setAddress("福建");
//调用session的方法实现添加
session.save(user);
// 5、提交事务
tx.commit();
// 6、关闭资源
session.close();
sessionFactory.close();
}
}
2.2 根据id查询
调用session里面的get方法实现数据查询操作:
@Test
public void testGet(){
//1 调用工具类得到sessionFactory
SessionFactory sessionFactory= HibernateUtils.getSessionFactory();
//2 获取session
Session session=sessionFactory.openSession();
//3、开启事务
Transaction tx=session.beginTransaction();
//4、写具体crud操作
//根据id查询
//第一个参数:实体类的class; 第二个参数:id值
User user=session.get(User.class, 4);
System.out.println(user);
//5、提交事务
tx.commit();
//6、关闭资源
session.close();
sessionFactory.close();
}
运行testGet方法:
2.3 修改
数据库修改数据语句:update t_user set username=? where uid=?;
从这条语句我们可以看出,要想修改数据就得先把相应数据获得(即查询出),所以进行修改操作首先得查询,然后再修改。
调用session里面的update方法实现数据修改操作:
@Test
public void testUpdate(){
//1 调用工具类得到sessionFactory
SessionFactory sessionFactory= HibernateUtils.getSessionFactory();
//2 获取session
Session session=sessionFactory.openSession();
//3、开启事务
Transaction tx=session.beginTransaction();
//4、写具体crud操作
//根据id查询
User user=session.get(User.class, 4);
//向返回的user对象里放置修改之后的值
user.setUsername("小黄");
//调用session的方法update进行修改
session.update(user);
//????先到user对象中找到uid的值,再根据uid进行修改
//5、提交事务
tx.commit();
//6、关闭资源
session.close();
sessionFactory.close();
}
2.4 删除
调用session里面的delete方法实现数据删除操作:
(有两种方式,一般用第一种)
- 第一种,根据id查询出来之后再进行删除操作
@Test
public void testDelete(){
//1 调用工具类得到sessionFactory
SessionFactory sessionFactory= HibernateUtils.getSessionFactory();
//2 获取session
Session session=sessionFactory.openSession();
//3、开启事务
Transaction tx=session.beginTransaction();
//4、写具体crud操作
//删除操作,根据id查询对象进行删除
User user=session.get(User.class, 4);
session.delete(user);
//5、提交事务
tx.commit();
//6、关闭资源
session.close();
sessionFactory.close();
}
- 第二种,不用查询,直接把id值给User中的setUid方法
@Test
public void testDelete(){
//1 调用工具类得到sessionFactory
SessionFactory sessionFactory= HibernateUtils.getSessionFactory();
//2 获取session
Session session=sessionFactory.openSession();
//3、开启事务
Transaction tx=session.beginTransaction();
//4、写具体crud操作
//删除操作
User user=new User();
user.setUid(1);
session.delete(user);
//5、提交事务
tx.commit();
//6、关闭资源
session.close();
sessionFactory.close();
}
最后,要注意在运行每一个方法的时候要选中方法名,然后再右键run as—>JUnit Test