欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hibernate持久层框架使用【三】数据查询与删除

程序员文章站 2022-04-16 22:58:01
...

Hibernate数据查询可以通过hibernate封装好的两个方法来实现

分别是get方法和load方法,这两个方法都是通过主键来查询数据

get方法:

新建个get.class类来测试一下,下面贴上代码

public class get {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MySessionFactory mySessionFactory = new MySessionFactory();
		Session session = mySessionFactory.getSession();
		
		User user = (User) session.get(User.class, 1);
		System.out.println("姓名="+user.getName()+",年龄="+user.getAge()+",id="+user.getId());
		
		//mySessionFactory.commit();
		mySessionFactory.close();
	}

}

get方法第一个参数为参数类型(查询的数据转为对应的类型)第二个参数为主键,例如这里查询主键为1的数据

Hibernate: 
    select
        user0_.user_id as user_id1_0_0_,
        user0_.age as age2_0_0_,
        user0_.name as name3_0_0_ 
    from
        tb_user user0_ 
    where
        user0_.user_id=?
姓名=王安石,年龄=5,id=1

控制台成功打印出了select语句以及查询出来的信息(这里查询方法是不需要提交事务的)

load方法:

load方法与get方法不同的一点在于,它是在数据被使用时才会进行查询

例如下面这段代码

public class get {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MySessionFactory mySessionFactory = new MySessionFactory();
		Session session = mySessionFactory.getSession();
		
//		User user = (User) session.get(User.class, 2);
		User user = (User) session.load(User.class, 3);
//		System.out.println("姓名="+user.getName()+",年龄="+user.getAge()+",id="+user.getId());
		
//		mySessionFactory.commit();
		mySessionFactory.close();
	}

}

运行后可以发现控制台并没有输出select语句,说明load并没有真正去查询数据

但是如果将代码中

System.out.println("姓名="+user.getName()+",年龄="+user.getAge()+",id="+user.getId());

这句的注释去掉,再运行一遍,可以看到控制台这时才使用了select语句去查询数据

Hibernate: 
    select
        user0_.user_id as user_id1_0_0_,
        user0_.age as age2_0_0_,
        user0_.name as name3_0_0_ 
    from
        tb_user user0_ 
    where
        user0_.user_id=?
姓名=王安石,年龄=5,id=3

删除数据

delete方法:

新建一个delete类测试删除方法

public class delete {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MySessionFactory mySessionFactory = new MySessionFactory();
		Session session = mySessionFactory.getSession();
		
		User user = new User();
		user.setId(2);
		
		session.delete(user);
		
		mySessionFactory.commit();
		mySessionFactory.close();
	}

}

这个删除方法非常简单,只需要给user对象设置好主键id,再传给delete方法,运行后看到控制台打印delete语句,数据表成功删除该数据