zoukankan      html  css  js  c++  java
  • 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);
    	}
    }
    

      

  • 相关阅读:
    学会企业分析
    股票暴跌,收益会更高
    富人?中产?
    学会看财务报表
    财务自由三大核心工具
    理财工具分类
    webpack构建速度和体积极限优化
    将搜索时间设置为23:59:59
    省市区县街道四级联动下拉菜单
    用原生JS实现多张图片上传及预览功能(兼容IE8)
  • 原文地址:https://www.cnblogs.com/liuyanzeng/p/6044295.html
Copyright © 2011-2022 走看看