1. 程式人生 > >hibernate對單表增刪改查(CRUD)

hibernate對單表增刪改查(CRUD)

增刪改查:

  • save
  • update
  • delete
  • get/load(查詢單個記錄)
import java.util.Date;


import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import
org.junit.After; import org.junit.Before; import org.junit.Test; //測試類 public class StudentsTest { private SessionFactory sessionFactory; private Session session; private Transaction transaction; @Before public void init(){ //初始化 //建立配置物件 Configuration config=new Configuration().configure(); //建立服務註冊物件
ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); //建立會話工廠物件 sessionFactory=config.buildSessionFactory(serviceRegistry); //會話物件,開啟會話 session=sessionFactory.openSession(); //開啟事務
transaction=session.beginTransaction(); } @After public void destory(){ //釋放資源 //提交事務 transaction.commit(); //關閉會話 session.close(); //關閉會話工廠 sessionFactory.close(); } @Test public void testSaveStudents(){ //生成學生物件 // Students s=new Students(1,"張三丰","男",new Date(),"武當山"); Students s=new Students(); // s.setSid(1); //native:主鍵自動增長,無須賦值;若強制賦值無效果 s.setSname("張三丰"); s.setGender("男"); s.setBirthday(new Date()); // s.setAddress("武當山"); Address address=new Address("710068","02988567123","西安市"); s.setAddress(address); //儲存物件進入資料庫 session.save(s); } @Test public void testGetStudents(){ //查:get方法 Students s=(Students)session.get(Students.class, 1); //第一個引數表示類物件(即查詢的表所對應的類物件,本例查詢students表,對應Students類);第二個引數是識別符號,即所要查詢的記錄對應的主鍵。 System.out.println(s); } @Test public void testLoadStudents(){ //查:load方法 Students s=(Students)session.load(Students.class, 1); //第一個引數表示類物件(即查詢的表所對應的類物件,本例查詢students表,對應Students類);第二個引數是識別符號,即所要查詢的記錄對應的主鍵。 System.out.println(s); } @Test public void testUpdateStudents(){ //更新 Students s=(Students)session.get(Students.class, 1); //第一個引數表示類物件(即查詢的表所對應的類物件,本例查詢students表,對應Students類);第二個引數是識別符號,即所要查詢的記錄對應的主鍵。 s.setGender("女"); session.update(s); } @Test public void testDeleteStudents(){ //刪除 Students s=(Students)session.get(Students.class, 1); //第一個引數表示類物件(即查詢的表所對應的類物件,本例查詢students表,對應Students類);第二個引數是識別符號,即所要查詢的記錄對應的主鍵。 session.delete(s); } }

hibernate.cfg.xml:

<property name="hbm2ddl.auto">update</property>

執行save,資料庫:
這裡寫圖片描述
查詢get方法,控制檯:
這裡寫圖片描述
查詢load,控制檯:
這裡寫圖片描述
執行update,資料庫:
這裡寫圖片描述
執行delete,資料庫:
這裡寫圖片描述

get和load的區別:
一:
這裡寫圖片描述
get:立刻傳送sql語句,返回的就是本身的持久化類的物件。
load:不立刻傳送sql語句,返回代理物件,只有真正使用這個物件時才傳送sql語句。
二:
這裡寫圖片描述

@Test
    public void testGetStudents(){  //查:get方法
        Students s=(Students)session.get(Students.class, 100); //第一個引數表示類物件(即查詢的表所對應的類物件,本例查詢students表,對應Students類);第二個引數是識別符號,即所要查詢的記錄對應的主鍵。
//      System.out.println(s.getClass().getName());  //列印物件的類物件的名字
        System.out.println(s);
    }

    @Test
    public void testLoadStudents(){  //查:load方法
        Students s=(Students)session.load(Students.class, 100); //第一個引數表示類物件(即查詢的表所對應的類物件,本例查詢students表,對應Students類);第二個引數是識別符號,即所要查詢的記錄對應的主鍵。
//      System.out.println(s.getClass().getName());  //列印物件的類物件的名字
        System.out.println(s);
    }