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

猜你喜欢

转载自blog.csdn.net/God_Father_kao/article/details/85221172