package com.hanqi.dao;

import static org.junit.Assert.*;
import java.util.*;
import org.hibernate.service.*;
import org.hibernate.cfg.Configuration;
import org.hibernate.*;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.junit.*; public class TestNews
{ //构建会话工厂对象 较为消耗资源
SessionFactory sf = null; //构建会话对象
Session se = null; //开启事务
Transaction tr = null; @Before
public void init()
{
System.out.println("这是测试之前的代码"); //第一步:构建一个配置类
Configuration conf = new Configuration().configure(); //第二步:构建注册器类
ServiceRegistry serv = new StandardServiceRegistryBuilder().applySettings(conf.getProperties()).build(); //构建会话工厂对象 较为消耗资源
sf = conf.buildSessionFactory(serv); //构建会话对象
se = sf.openSession(); //开启事务
tr = se.beginTransaction();
} //HQL查询
@Test
public void testquery()
{
// 2 - 1 查询
// String hql = "select n.id,n.title from News n order by n.id desc"; //News 是一个类 // 2 - 2 查询
// String hql = "select count(n.id),min(n.id),max(n.id) from News n"; // 2 - 3 group by 分组
// String hql = "select n.title,count(n.title) from News n group by n.title"; // 2 - 4 group by having 分组
// String hql = "select n.title,count(n.title) from News n group by n.title having count(n.title) > 4"; // 2 - N 输出方式
/* List<Object[]> l = query.list(); for(Object[] news : l)
{
for(Object o : news)
{
System.out.println( o + " ");
} System.out.println();
}
*/
} //HQL查询
@Test
public void testQuery()
{
// 1 - 1
//String hql = "from News n where n.id = :ID and n.title like :Title"; // 1 - 2
//String hql = "from News n where n.id = ? and n.title like ?"; //降序排序
// 1 - 3
// String hql = "from News n order by n.id desc"; /*
// 1 - 1
List<News> l = query.setInteger("ID", 23) //参数名只要能够与语句中的参数名匹配起来就可以
.setString("Title", "%标题%")
.list();
*/ /*
// 1 - 2
List<News> l = query.setInteger(0, 23)
.setString(1, "%标题%")
.list();
*/
// 1 - 3
// List<News> l = query.List(); //遍历输出查询 // 1 - N 均使用下列方式遍历
/*
List<News> l = query.list(); for(News news : l)
{
System.out.println(news);
}
*/ } //HQL分页查询
@Test
public void testQueryPage()
{ // 1 - 4
String hql = "from News n"; //生成Query对象
Query query = se.createQuery(hql); //分页
//页数
int pagenum = 3;
//每页最大行数 int rows = 5; List<News> l = query.setFirstResult((pagenum - 1) * rows) //起始行的编号
.setMaxResults(rows) //每页显示最大行数
.list(); System.out.println("结果集行数 = " + l.size() ); for(News news : l)
{
System.out.println(news);
} } //一级缓存
@Test
public void testYJHC()
{ News news1 = (News)se.get(News.class, 23); System.out.println(news1); News news2 = (News)se.get(News.class, 23); System.out.println(news2); } @Test
public void test()
{
System.out.println("这是测试"); //执行操作 //数据查询
//查询,转成,持久化状态
News news2 = (News)se.get(News.class, 22); // News 对象名 = (News(强制转化为的类型))会话对象.get.(实体类类型,主键值) System.out.println(news2); } @Test
public void testGet()
{
//执行操作 //执行数据插入
News news = new News();//转成,瞬时状态(临时状态) news.setTitle("标题");
news.setContent("内容");
news.setCreatedate(new Date());
news.setAuthor("作者"); //保存,瞬时状态转成持久化状态
se.save(news); //将实体类传进去 news.setTitle("新标题栏3"); //将对应数据进行修改 //刷新
se.flush(); //主动执行一次刷新 //提交事务
tr.commit(); //关闭会话
se.close(); //构建会话对象
se = sf.openSession(); //开始事务
tr = se.beginTransaction(); // news.setTitle("改变的标题"); // news.setId(1); //托管状态 se.saveOrUpdate(news); //会自动判断插入与修改 // se.update(news); //将托管状态转为持久化状态 news.setContent("新的内容1"); //删除
News news3 = (News)se.get(News.class, 1); //(News.class, 要删除的id号) se.delete(news3); } //延迟加载
@Test
public void testLoad()
{ News news4 = (News)se.load(News.class, 1);
System.out.println("id = " + news4.getId());
System.out.println("title = " + news4.getTitle()); } @After
public void destroy()
{
System.out.println("测试之后执行"); //提交事务
tr.commit(); //关闭会话
se.close(); //关闭会话工厂
sf.close();
}
}

20160115--Hibernate的更多相关文章

  1. hibernate多对多关联映射

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  2. 解决 Springboot Unable to build Hibernate SessionFactory @Column命名不起作用

    问题: Springboot启动报错: Caused by: org.springframework.beans.factory.BeanCreationException: Error creati ...

  3. hibernate多对一双向关联

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  4. Hibernate中事务的隔离级别设置

    Hibernate中事务的隔离级别,如下方法分别为1/2/4/8. 在Hibernate配置文件中设置,设置代码如下

  5. Hibernate中事务声明

    Hibernate中JDBC事务声明,在Hibernate配置文件中加入如下代码,不做声明Hibernate默认就是JDBC事务. 一个JDBC 不能跨越多个数据库. Hibernate中JTA事务声 ...

  6. spring applicationContext.xml和hibernate.cfg.xml设置

    applicationContext.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans ...

  7. [原创]关于Hibernate中的级联操作以及懒加载

    Hibernate: 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似 ...

  8. hibernate的基本xml文件配置

    需要导入基本的包hibernate下的bin下的required和同bin下optional里的c3p0包下的所有jar文件,当然要导入mysql的驱动包了.下面需要注意的是hibernate的版本就 ...

  9. Maven搭建SpringMVC+Hibernate项目详解 【转】

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...

  10. 1.Hibernate简介

    1.框架简介: 定义:基于java语言开发的一套ORM框架: 优点:a.方便开发;           b.大大减少代码量;           c.性能稍高(不能与数据库高手相比,较一般数据库使用者 ...

随机推荐

  1. #include <boost/thread.hpp>

    在这个库最重要的一个类就是boost::thread,它是在boost/thread.hpp里定义的,用来创建一个新线程.它已经被纳入C++标准库中. 小结:新一代C++标准将线程库引入后,将简化多线 ...

  2. 为下拉式菜单(DropDownList)添加第一个选项

    很多方法可以为为下拉式菜单(DropDownList)添加第一个选项,下面是Insus.NET小结了几个方法,仅供参考: Html code: <body>    <form id= ...

  3. 11gR2 RAC启用iptables导致节点宕机问题处理

    通常,在安装数据库时,绝大多数都是要求把selinux及iptables关闭,然后再进行安装的.但是在运营商的系统中,很多安全的因素,需要将现网的数据库主机上的iptables开启的. 在开启ipta ...

  4. PAT A 1065. A+B and C (64bit) (20)

    题目 Given three integers A, B and C in [-263, 263], you are supposed to tell whether A+B > C. Inpu ...

  5. 【网络流】【HDU3081】Marriage Match II

    得出正解前的思考: 1.我该如何处理朋友关系?消去朋友关系 ,直接由朋友关系得出情人关系的连线? 2.我该如何保证每次源点给1-N 平均分配1点流? 又可耻的看了题解,答案让我醍醐灌顶

  6. Equal 和==比较

    Equal 和==比较 ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相当,只能用==操作符. 如果一个变 ...

  7. JAVASCRIPT——图片滑动效果

    点击按钮开始整体右移,移动至蓝色区域全部显示出来停止. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  8. 根据反射获取属性信息并创建DataTable

    查看了一些方法之后,做了一些总结,此方法适用于传进的参数是List<T>类型, 但事先并不知道T的类型,T可以是自定义类型. public DataTable CreateDataTabl ...

  9. Javascript 可同时变大变宽等一系列效果运动框架——逐行分析代码,让你轻松了解运动的原理

    等待已久的可变大,变宽 等一系列效果运动框架出炉了,现在还是个初级版本,能满足需求.我们看看是如何实现的. 我们知道在Javascript 中 ‘.’等同于 ‘[]’ 例如: oDiv.style.h ...

  10. mysql性能优化学习笔记(6)数据库配置优化&硬件优化

    一.操作系统配置优化:          1. 网络方面,修改/etc/sysctl.conf文件,增加tcp支持的队列数,减少断开连接时,资源的回收.          2. 打开文件数的限制.修改 ...