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

时间:2024-08-31 16:35:50
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);
}
}

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