您的位置:首页 > 其它

20160115--Hibernate

2016-01-15 20:12 267 查看
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();
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: