1. 程式人生 > >Hibernate 教程(三)[Hibernate物件的操作,物件CURD操作(增刪改查)]

Hibernate 教程(三)[Hibernate物件的操作,物件CURD操作(增刪改查)]

準備

因為測試學習的時候我們每次建一個類都需要獲取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