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

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语句,数据表成功删除该数据

猜你喜欢

转载自blog.csdn.net/weixin_39885435/article/details/82831642