Hibernate---单条记录的增删改查

package com.hanqi.test;

import static org.junit.Assert.*;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.hanqi.entity.User;

public class Test01 {
	private ServiceRegistry sr =null;
	private Session  se =null;
	private Transaction ts = null;
	private SessionFactory sf = null;
	//在测试用例方法被执行之前自动执行的方法
	//一般用来初始化公用的对象
	//前置方法
	@Before
	public void init()
	{

		//1.获取配置文件
		Configuration cfg  = new Configuration().configure();
		
		//2.注册配置
		sr =new StandardServiceRegistryBuilder()
				.applySettings(cfg.getProperties()).build();
		
		
		//3. 获取Session-Factory(相当于JDBCd 连接)
		sf = cfg.buildSessionFactory(sr);
		
		System.out.println(sf);
		
		//4.产生Session(回话)
		  se = sf.openSession();  //创建
		
		//5.启动事务
		 ts = se.beginTransaction();
		
		
	}
	
	//后置方法
	//一般用来释放资源
	@After
	public void destroy()
	{

		//7.提交事务
		ts.commit();  
		
		//8释放资源
		se.close();
		sf.close();
		
		
	}
	//测试Hibernate连接数据库
	@Test
	public void test() {
		
		
		//1.获取配置文件
		Configuration cfg  = new Configuration().configure();
		
		//2.注册配置
		ServiceRegistry sr =new StandardServiceRegistryBuilder()
				.applySettings(cfg.getProperties()).build();
		
		
		//3. 获取Session-Factory(相当于JDBCd 连接)
		SessionFactory sf = cfg.buildSessionFactory(sr);
		
		System.out.println(sf);
		
		//4.产生Session(回话)
		Session  se = sf.openSession();  //创建
		
		//5.启动事务
		Transaction ts = se.beginTransaction();
		
		//6.操作数据库
		//添加数据
		//实例化的新的对象,处于临时状态
		User u1 = new User();
		u1.setBirthday(new Date());
		u1.setMoney(2000);
		u1.setPassword("111111");
		u1.setUserName("测试1");
		//u1.setUserId(2);//自然主键
		
		//保存数据
		//透过save方法吧对象从临时状态变成持久化状态
		se.save(u1);//添加数据
		
		System.out.println("u1="+u1);
		
		
		//7.提交事务
		ts.commit();  
		
		//释放资源
		se.close();
		sf.close();
		
	}
	
	
	//测试查询
	@Test
	public void test01()
	{
		//查询数据
		//提供两个参数
		//1需要返回哪一个持久化类的实例
		//2实例的标识(数据的主键值)
		//通过Session的get方法获得的对象处于持久化状态
		User u2 =(User)se.get(User.class, 3);//查找
		u2.setUserName("修改的");//修改
		
		System.out.println(u2);
		//删除
		se.delete(u2);//使持久化对象进入删除状态
	}
	@Test
	public void test02()//测试缓存
	{
		User u1 = (User) se.get(User.class, 4);//立即加载数据
		System.out.println("get老付变傻逼之后");
		System.out.println(u1);
		User u2 =(User) se.get(User.class, 14);
		System.out.println(u2);
	}

	@Test
	public void tese03()
	{
		
		User u1 =(User)se.load(User.class, 14);//延时加载数据(懒加载)
		System.out.println("load后");
		System.out.println(u1);//当使用时才加载
	}
	
	//测试游离状态
	@Test
	public void test04()
	{
		User u1=(User)se.get(User.class, 4);//得到持久化状态的对象
		System.out.println("u1="+u1);
		
		//关闭Session
		se.close();
		
		//使u1进入游离状态
		u1.setUserName("测试游离111");
		u1.setUserId(null);//把id设为null
		System.out.println("这是啥,重新创建session");
		//重新创建session
		se=sf.openSession();
		ts=se.beginTransaction();//重新开启事务
		
		
		//se.saveOrUpdate(u1);
		System.out.println("u1="+u1);
	}
}

  

原文地址:https://www.cnblogs.com/liuyanzeng/p/6044295.html