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

摘要:
packagecom.hanqi.test;importstaticorg.junit.Assert.*;importjava.util.Date;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.Transaction;importorg.hibernate.boot.regist
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---单条记录的增删改查第1张

免责声明:文章转载自《Hibernate---单条记录的增删改查》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇el-select数据超出展示样式(转)SQLSERVER表分区的介绍(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C++单元测试工具之CPPUnit使用

CppUnit[1]是Micheal Feathers由JUnit移植过来的一个在GNU LGPL条约下的并在sourcefogre网站上开源的C++单元测试框架。(转自百度) 本文是对cppunit的一个初步体验,将分别在windows 7和ubuntu 12上进行尝试 文章本着极端细致的原则,力求让每个第一次接触的人都能按照教程完整实现,同时文章也贴出...

JavaMail给QQ邮箱发邮件报错

org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException: 535 Error: ÇëʹÓÃÊÚȨÂëµÇ¼¡£ÏêÇéÇë¿´: h...

maven 实践 :管理依赖

有人认为Maven是一个依赖管理工具,当然这种想法是错误的(确切的说Maven是一个项目管理工具,贯穿了整个项目生命周期,编译,测试,打包,发布...),但Maven给人造成这种错误的印象也是有原因的,因为Maven的依赖管理十分强大,用好了Maven,你不再需要面对一大堆jar感到头大,依赖冲突,无用依赖等问题也能够得到有效的防止和解决。本节介绍如何用好...

JUnit入门

一、简单介绍 JUnit是一个开源的java单元測试框架。在1997年,由 Erich Gamma 和 Kent Beck 开发完毕。这两个牛人中 Erich Gamma 是 GOF 之中的一个;Kent Beck 则在 XP 中有重要的贡献(你认为眼熟一点都不奇怪)。        正如常言道:“麻雀虽小,五脏俱全。” JUnit设计的很小巧,可是功能...

Error invoking SqlProvider method (com.github.abel533.mapper.MapperProvider.dynamicSQL). Cause: java.lang.InstantiationException: com.github.abel533.mapper.MapperProvider

org.apache.ibatis.exceptions.PersistenceException: ### Error querying database.  Cause: org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (com.github.a...

12个提高Java程序员工作效率的工具

  Java开发者常常都会想办法如何更快地编写Java代码,让开发过程变得更加轻松,更加高效。目前,市面上涌现出越来越多的高效编程工具。团长总结了几个常用的工具,其中包含了大多数开发人员已经使用、正在使用或将来一定会用到的高效工具。      1、Eclipse   Eclipse是最有名也最广泛使用的Java集成开发环境(IDE),允许开发者结合语言支持...