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关联对象的增删改查------查

    本篇博客是之前博客hibernate关联对象的增删改查------查 的后继,本篇代码的设定都在前文已经写好,因此读这篇之前,请先移步上一篇博客 //代码片5 SessionFactory sessi ...

  2. Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查

    一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process ...

  3. mysql对库,表及记录的增删改查

    破解密码 #1.关闭mysqlnet stop mysqlmysql还在运行时需要输入命令关闭,也可以手动去服务关闭 #2.重新启动mysqld --skip-grant-tables跳过权限 #3m ...

  4. Hibernate入门案例及增删改查

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

  5. Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合

    前言        转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍: ...

  6. hibernate关联对象的增删改查------增

    本文可作为,北京尚学堂马士兵hibernate课程的学习笔记. 这一节,我们看看hibernate关联关系的增删改查 就关联关系而已,咱们在上一节已经提了很多了,一对多,多对一,单向,双向... 其实 ...

  7. Hibernate进行对象的增删改查

    首先我们看看hibernate手动配置步骤 (这个了解一点就可以了,以后是不会自己全部手动配置的) 1.    创建WEB项目 2       下载hibernate-release-4.3.11.F ...

  8. Hibernate——(2)增删改查

    案例名称:Hibernate完成增删改查 案例描述:抽取出工具类并完成删除.修改.查询功能. 具体过程: 1.使用上面的例子(Hibernate--(1)Hibernate入门http://blog. ...

  9. MySQL:记录的增删改查、单表查询、约束条件、多表查询、连表、子查询、pymysql模块、MySQL内置功能

    数据操作 插入数据(记录): 用insert: 补充:插入查询结果: insert into 表名(字段1,字段2,...字段n) select (字段1,字段2,...字段n) where ...; ...

  10. Hibernate常用api以及增删改查

    一   .API的定义 所谓的API全称就是(Application Programming Interface,应用程序编程接口).就是类库对外提供的接口.类.枚举.注解等元素. 如:JDK API ...

随机推荐

  1. Linux学习笔记(5)Linux常用命令之文件搜索命令

    (1)find find命令用于文件搜索,所在路径/bin/find,其语法格式为: find [搜索范围] [匹配条件] 1)-name:根据文件名搜索,如搜索/etc下的init文件 [root@ ...

  2. 经典贪心算法uva11729

    uva11729 这个题的题意是 你有n个部下,每个部下需要完成一项任务.第i个部下需要你花Bi分钟交代任务,然后他会立刻独立地.无间断地执行Ji分钟后完成任务. 你需要选择交待任务的顺序,使得所有任 ...

  3. LoadRunner录制图片验证码

    LoadRunner录制图片验证码 LoadRunner自身是无法捕获到图片验证码的,但是我们可以帮助LoadRunner来实现验证码的捕获. 1.图片验证码 图片验证码的产生来自服务器端,由服务器生 ...

  4. Python学习笔记08

      正则表达式包re match,search,sub re.match(pattern, string, flags=0) re.search(pattern, string, flags=0) r ...

  5. linux tomcat配置https

    自己生成一个ssl证书,因为是自己生成的所以该证书,不被浏览器信任(具体表现https前面有个X) [root@centos apache-tomcat-]# keytool -genkey -ali ...

  6. Wordpress如何开启用户注册功能

    登录你的Wordpress管理员帐号,并进入管理后台,点击左侧菜单栏的"设置"--"常规"   在打开的设置页面,下方找到"允许任何人注册" ...

  7. 4D时间管理

    时间管理的4D原则   时间矩阵:每个人,每天要做的事情大致分为四类:一类:必须做的,不做会产生不良后果的二类:需要做的,为将来或者今后阶段做准备工作的三类:可以不做,但又不得不做的,例如通过简约形式 ...

  8. [转]OpenVPN 安装与配置

    一.服务器端安装及配置 服务器环境:干净的CentOS6.3 64位系统 内网IP:10.143.80.116 外网IP:203.195.xxx.xxx OpenVPN版本:OpenVPN 2.3.2 ...

  9. 【转】敏捷开发 Scrum 总结

    转:http://www.open-open.com/lib/view/open1330413325514.html 最近把之前学习 Scrum 的资料整理为一篇文档,在接下来的团队和项目开发中,根据 ...

  10. POJ 2096 (概率DP)

    题目链接: http://poj.org/problem?id=2096 题目大意:n种bug,s个子系统.每天随机找一个bug,种类随机,来自系统随机.问找齐n种bug,且每个子系统至少有一个bug ...