20160115--Hibernate
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的更多相关文章
- hibernate多对多关联映射
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- 解决 Springboot Unable to build Hibernate SessionFactory @Column命名不起作用
问题: Springboot启动报错: Caused by: org.springframework.beans.factory.BeanCreationException: Error creati ...
- hibernate多对一双向关联
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- Hibernate中事务的隔离级别设置
Hibernate中事务的隔离级别,如下方法分别为1/2/4/8. 在Hibernate配置文件中设置,设置代码如下
- Hibernate中事务声明
Hibernate中JDBC事务声明,在Hibernate配置文件中加入如下代码,不做声明Hibernate默认就是JDBC事务. 一个JDBC 不能跨越多个数据库. Hibernate中JTA事务声 ...
- spring applicationContext.xml和hibernate.cfg.xml设置
applicationContext.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans ...
- [原创]关于Hibernate中的级联操作以及懒加载
Hibernate: 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似 ...
- hibernate的基本xml文件配置
需要导入基本的包hibernate下的bin下的required和同bin下optional里的c3p0包下的所有jar文件,当然要导入mysql的驱动包了.下面需要注意的是hibernate的版本就 ...
- Maven搭建SpringMVC+Hibernate项目详解 【转】
前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...
- 1.Hibernate简介
1.框架简介: 定义:基于java语言开发的一套ORM框架: 优点:a.方便开发; b.大大减少代码量; c.性能稍高(不能与数据库高手相比,较一般数据库使用者 ...
随机推荐
- Linux学习笔记5-搭建内网Yum源
一.安装Nginx 1.安装依赖: [root@nodeSource local]# yum install gc-devel gcc-c++ pcre-devel zlib-devel 2.解压N ...
- Apache启用GZIP压缩网页传输方法
一.gzip介绍 Gzip是一种流行的文件压缩算法,如今的应用十分广泛,尤其是在Linux平台.当应用Gzip压缩到一个纯文本文件时,效果是很明显的,大约能够降低70%以上的文件大小.这取决于文件里的 ...
- dojo demo, server验证username是否已经被使用
这个demo有助于理解JS与server的协同工作. 文档结构如上图. 主要是三个文件: main.js table.html validateUserName.jsp (代码见文章末尾) 页面打 ...
- C++暂时对象
C++真正所谓的暂时对象是不可见的--不会在你的源码中出现.仅仅要你产生一个non-heap object而没有为它命名,便诞生了一个暂时对象.此等匿名对象通常发生于两种情况: 一是当隐式类型转换(i ...
- GetProcessIdOfThread在WinXP及之前操作系统的替代实现
还是学习VLD2.X版本看到的: 在Windows XP及之前的操作系统没有提供GetProcessIdOfThread的API,这里给出了一个替代的实现方式: 头文件: #if _WIN32_WIN ...
- 诡异的_DEBUG宏
学习VLD1.0代码,发现Release版本的代码_DEBUG宏是已定义的,查找工程配置确只有NDEBUG宏的定义,不见_DEBUG的踪影. 好吧,最后发现是由于工程Code Generation选项 ...
- 关于Apache+PHP+MySQL的安装
除了在安装MySQL的时候花了三天的时间,也学习了如何看错误日志,如何看配置文件等, Apache+PHP的安装都比较顺利,主要是要按照一个文档来安装,不要东拼西凑, 个人认为这篇“百度经验”写得很好 ...
- getgrgid()函数
getgrgid(从组文件中取得指定gid 的数据)相关函数 fgetgrent,getgrent,getgrnam表头文件 #include<grp.h>#include<sys/ ...
- php汉字转Unicode编码函数
/** * $str 原始字符串 * $encoding 原始字符串的编码,默认GBK * $prefix 编码后的前缀,默认"&#" * $postfix 编码后的后缀, ...
- fragment嵌套,viewpager嵌套 不能正确显示
转帖:http://blog.csdn.net/mybook1122/article/details/24003343 通常为 viewPager.setAdapter(new MyFragmentP ...