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);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章