Hibernate 具体代码
package com.shuyinghengxie.doudou; import static org.junit.Assert.*; import java.util.Date;
import java.util.List; import org.hibernate.Query;
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.mapping.Map;
import org.hibernate.service.ServiceRegistry;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.shungying.hengxie.TUser;
import com.shungying.hengxie.USer; public class TEST01 { private SessionFactory sf = null ;
private Session se = null ;
private Transaction ts = null ;
//在测试用例方法被执行之前自动执行的方法
//一般用来初始化对象
@Before
public void init ()
{
//1获取配置文件
Configuration cfg = new Configuration().configure() ; //2注册配置
ServiceRegistry sr = new StandardServiceRegistryBuilder().
applySettings(cfg.getProperties()).build(); //3获取SessionFactory
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()
{ //6操作数据库
//添加数据
USer u1 = new USer() ; u1.setBrithday(new Date());
u1.setMoney(2000);
u1.setName("tom");
u1.setPassword("123123"); //通过save方法将对象从临时状态转变成持久化状态
se.save(u1) ; //保存数据,并未存进数据库,只是获取自增序列的id赋值
System.out.println(u1); } //查询数据
@Test
public void test01()
{
try{
//提供两个参数
//1需要返回哪一个持久化类的实例
//2实例的标识(数据主键值)
USer us = (USer)se.get(USer.class, 4) ;//返回Object类型 //修改姓名
us.setName("前面有个大傻逼"); System.out.println(us);
}catch(Exception e)
{
System.out.println("id不存在"); e.getMessage() ;
}
//删除
//se.delete(us);
} @Test
public void test02()
{
USer us = (USer)se.get(USer.class, 15) ; System.out.println(us);
} /*
* get 立即加载数据
* 查询数据不存在返回null ,不报异常
* load 延时加载数据,使用时在加载
* 查询数据不存在会报异常
*/
@Test
public void test03()
{
USer us = (USer)se.load(USer.class, 6) ; System.out.println(us);
} //测试游离状态
@Test
public void test04()
{
//得到持久化状态的对象
USer us = (USer)se.get(USer.class, 5) ; System.out.println(us); se.close() ;//关闭Session us.setName("前面两个好大好大的傻逼"); //重新创建Session
se = sf.openSession() ; //重新开启事务
ts = se.beginTransaction() ; se.saveOrUpdate(us); System.out.println(us);
} //测试HQL
@Test
public void test05()
{
//使用HQL //1检测创建Query 对象
Query qu = se.createQuery("from USer u where user_id < ? ") ; //设置占位符
qu.setInteger(0, 10) ; //得到结果集
List<USer> list = qu.list() ; //遍历结果集
for(USer us : list )
{
System.out.println(us);//打印结果集
} /*第二种占位符,从0开始*/
Query qu1 = se.createQuery("from USer u where name = :uname ") ; qu1.setString("uname", "tom") ; //方法链调用
List<USer> list1 = null ;
list1 = se.createQuery("from USer u where user_id < ? ").setInteger(0, 10).list() ; //遍历结果集
for(USer us : list1 )
{
System.out.println(us);//打印结果集
}
} //测试分页
@Test
public void test06()
{
//设置开始行号 页码=2
//(页码 - 1 ) * 每页行数 List<USer> list = se.createQuery("from USer order by user_id ") //HQL语句
.setMaxResults(2) //设置每页显示行数
.setFirstResult(2) //设置第二页开始行号
.list() ; //遍历结果集
for(USer us : list )
{
System.out.println(us);//打印结果集
} } //测试分页
@Test
public void test07()
{
List<Object[ ]> list = se.createQuery("select name from USer group by name")
.list() ;
System.out.println(list.size());
for(Object obj : list)
{
System.out.println(obj);
}
} //测试投影查询
@Test
public void test08()
{
List<Object[ ]> list = se.createQuery("select name, money from USer")
.list(); for(Object[ ] obj : list)
{
System.out.println(obj[0] + " " + obj[1]);
} List<USer> list1 = se.createQuery("select new USer(name, money) from USer")
.list() ; for(USer us : list1 )
{
System.out.println("姓名="+us.getName()+"金额="+us.getMoney());
} } //清空表
@Test
public void test09()
{
String hql = "DELETE FROM USer " ; Query query = se.createQuery(hql); int result = query.executeUpdate(); System.out.println("Rows affected: " + result); } //清空表
@Test
public void test10()
{
TUser tu = (TUser)se.get(TUser.class, 1l) ; System.out.println(tu);
} }
Hibernate 具体代码的更多相关文章
- Hibernate事务代码规范写法
----------------siwuxie095 事务相关概念 1.什么是事务 逻辑上的一组操作,构成这组操作的各个单元,要么一起成功, 要么一起失败 2.事务的四个特性 1)原子性 2)一致性 ...
- Hibernate逆向代码问题
问题描述 使用hibernate tools 插件生成pojo代码非常方便快捷,但是我今天使用的时候发现,在eclips安装jboss插件后,找不到Hibernate Code Generation ...
- 记录--java 分页 思路 (hibernate关键代码)
有时会脑袋蒙圈,记录下分页的思路 下面代码是hibernate的分页,其分页就是从第几条数据为起点,取几条数据.比如在mysql中的limit(5,10)取的就是第6条到第10条 在下面代码中的pag ...
- java web从零单排第二十二期《hibernate》代码分析之查看,删除用户信息
前两期的内容不知道大家理解的怎么样,我并没有详细的去解释代码的意思,如果你已经自己都钻研明白了,那最好过,但还是一知半解的话,接下来我会仔细分析代码. 1.register.jsp:这部分代码只是简单 ...
- java Hibernate UUID代码
package mypack; import java.io.Serializable; import java.net.InetAddress; /** * 唯一主键生成办法.从Hibernate中 ...
- hibernate入门案例
最近准备学ssh,今天学了一下hibernate,用的是hibernate4,现在已经出5了:配置文件很容易写错,写配置文件的时候尽量复制. 需要的jar包如下:(jar包我是直接放在项目工程里面了, ...
- java的三大框架(三)---Hibernate
一.什么是映射 这里所说的映射就是对象关系映射:将对象数据保存到数据库中,同时可以将数据库数据读入对象中,开发人员只对对象进行操作就可以完成对数据库数据的操作. 二.什么是基本映射 知道了什么是映射, ...
- hibernate(四) 双向多对多映射关系
序言 莫名长了几颗痘,真TM疼,可能是现在运动太少了,天天对着电脑,决定了,今天下午花两小时去跑步了, 现在继上一章节的一对多的映射关系讲解后,今天来讲讲多对多的映射关系把,明白了一对多,多对多个人感 ...
- spring和hibernate整合时无法自动建表
在使用spring整合hibernate时候代码如下: <property name="dataSource" ref="dataSource" /> ...
随机推荐
- 验证(Javascript和正则表达式)
昨天写了验证(C#和正则表达式),今天又写了个js版的验证.现在贴出来,为了方便自己查阅,同时也希望能给需要的人帮助和一些启发.由于今天才开始接触js,所以可能会有一些错漏,希望大家能批评指正. va ...
- FastJson--阿里巴巴公司开源的速度最快的Json和对象转换工具(转)
本文转自:http://blog.csdn.net/djun100/article/details/24237371 这是关于FastJson的一个使用Demo,在Java环境下验证的 class U ...
- 一小时学会Markdown写作
写作也是创作一件产品.以易懂.简洁.凝练的方式表达观点.阐述见解和知识,发挥影响力. 为什么要使用 Markdown 博文迁移的排版兼容.当在多个博客之间,或者在线博客与本地笔记软件之间迁移的时候,排 ...
- mysql的sql文件的备份与还原
1.备份 $mysqldump –u root –p*** dbname > filename.sql 2.还原 前提是数据库必须存在 $mysql –u root –p*** dbname ...
- (转载)CSV 文件处理 PERL
http://cn.perlmaven.com/how-to-read-a-csv-file-using-perl http://search.cpan.org/~hmbrand/Text-CSV_X ...
- [转]jexus的安装
转自http://www.cnblogs.com/xiaodiejinghong/p/3720921.html 这是一个集成了 mono3.4.0 和 jexus5.6.0 的 jexus+mono ...
- BZOJ 1036:树的统计Count(树链剖分)
http://www.lydsy.com/JudgeOnline/problem.php?id=1036 题意:中文题意. 思路:也是普通的树链剖分.唯一注意的点是在change函数中 while(t ...
- 使用System.arraycopy()实现数组之间的复制
System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制. 其函数原型是: public static void arraycopy(Object src, int s ...
- YTU 3006: 迷宫问题(栈与队列)
3006: 迷宫问题(栈与队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 3 解决: 1 题目描述 编写一个求解迷宫问题的程序,要求输出迷宫的所有路径,并求最短路径长度及最短路径 ...
- SQL-PIVOT 数据透视 行列转换
-- 数据透视 -- PIVOT: 行转列 SELECT * FROM ( SELECT N'张三' AS 姓名, N'语文' AS 课程,70 AS 分数 UNION SELECT ...