1. 程式人生 > >Hibernate持久層框架使用【三】資料查詢與刪除

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語句,資料表成功刪除該資料