hibernate對單表增刪改查(CRUD)
阿新 • • 發佈:2018-12-31
增刪改查:
- 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);
}