Hibernate 教程(三)[Hibernate物件的操作,物件CURD操作(增刪改查)]
阿新 • • 發佈:2018-12-23
準備
因為測試學習的時候我們每次建一個類都需要獲取Session,很麻煩。所以要把獲取Session的方法封裝成一個工具類
package uitl;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
* Session工具類
* @author LiHan
*
*/
public class SessionUtil {
/**
* 獲取Session
*/
public static Session getSession() {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
return session;
}
}
增刪改查
package dao;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query;
import org.junit.jupiter.api.Test;
import orm.entity.Event;
import uitl.SessionUtil;
public class EventDaoTest {
Session session = SessionUtil.getSession();
Transaction transaction = session.beginTransaction();
/**
* 查詢所有
*/
@Test
public void test01() {
// 使用hql進行查詢,後面我會講到
String hql = "from Event";
Query<Event> query = session.createQuery(hql, Event.class);
System.out.println(query.list());
}
/**
* 新增一條資料
*/
@Test
public void addTest() {
Event event = new Event();
event.setTitle("標題四");
event.setDate(new Date());
session.save(event);
test01();
transaction.commit();
}
/*
Hibernate:
insert
into
Event
(date, title)
values
(?, ?)
十二月 23, 2018 10:47:02 上午 org.hibernate.hql.internal.QueryTranslatorFactoryInitiator initiateService
INFO: HHH000397: Using ASTQueryTranslatorFactory
Hibernate:
select
event0_.id as id1_0_,
event0_.date as date2_0_,
event0_.title as title3_0_
from
Event event0_
[Event {id: 1, title: 標題一, date: 2018-12-23 13:55:49.0}, Event {id: 2, title: 標題二, date: 2018-12-23 13:55:49.0}, Event {id: 3, title: 標題三, date: 2018-12-23 13:55:49.0}, Event {id: 4, title: 標題四, date: Sun Dec 23 10:47:02 CST 2018}]
*/
/**
* 刪除資料
*/
@Test
public void deleteTest() {
Event event = session.get(Event.class, Long.valueOf("4"));
session.delete(event);
test01();
transaction.commit();
}
/*
Hibernate:
select
event0_.id as id1_0_0_,
event0_.date as date2_0_0_,
event0_.title as title3_0_0_
from
Event event0_
where
event0_.id=?
十二月 23, 2018 11:05:23 上午 org.hibernate.hql.internal.QueryTranslatorFactoryInitiator initiateService
INFO: HHH000397: Using ASTQueryTranslatorFactory
Hibernate:
delete
from
Event
where
id=?
Hibernate:
select
event0_.id as id1_0_,
event0_.date as date2_0_,
event0_.title as title3_0_
from
Event event0_
[Event {id: 1, title: 標題一, date: 2018-12-23 13:55:49.0}, Event {id: 2, title: 標題二, date: 2018-12-23 13:55:49.0}, Event {id: 3, title: 標題三, date: 2018-12-23 13:55:49.0}]
*/
@Test
public void updateTest() {
Event event = session.get(Event.class, Long.valueOf("3"));
event.setTitle("修改的標題");
session.save(event);
test01();
transaction.commit();
}
/*
Hibernate:
select
event0_.id as id1_0_0_,
event0_.date as date2_0_0_,
event0_.title as title3_0_0_
from
Event event0_
where
event0_.id=?
十二月 23, 2018 11:07:58 上午 org.hibernate.hql.internal.QueryTranslatorFactoryInitiator initiateService
INFO: HHH000397: Using ASTQueryTranslatorFactory
Hibernate:
update
Event
set
date=?,
title=?
where
id=?
Hibernate:
select
event0_.id as id1_0_,
event0_.date as date2_0_,
event0_.title as title3_0_
from
Event event0_
[Event {id: 1, title: 標題一, date: 2018-12-23 13:55:49.0}, Event {id: 2, title: 標題二, date: 2018-12-23 13:55:49.0}, Event {id: 3, title: 修改的標題, date: 2018-12-23 13:55:49.0}]
*/
/**
* 查詢資料
*/
@Test
public void selectTest() {
Event event = session.get(Event.class, Long.valueOf("3"));
System.out.println(event);
}
/*
Hibernate:
select
event0_.id as id1_0_0_,
event0_.date as date2_0_0_,
event0_.title as title3_0_0_
from
Event event0_
where
event0_.id=?
Event {id: 3, title: 修改的標題, date: 2018-12-23 13:55:49.0}
*/
}
進一步深入瞭解
基本的增刪改查就是這些,寫完這些程式碼需要去檢視一下的session對像管理的幾種狀態,並且瞭解到一級快取
https://www.cnblogs.com/xiaoluo501395377/p/3380270.html