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" /> ...
随机推荐
- Attribute 与 Property 的区别
网上的说法是: Property 是面向对象的概念,是Object的一部分. Attribute 是<input type="text"> type就是Attribut ...
- Ubuntu1404: 将VIM打造为一个实用的PythonIDE
参考: http://www.tuicool.com/articles/ZRv6Rv 说明: 内容非原创, 主要是做了整合和梳理. 在 ubuntu14.04 & debian 8 下测试通 ...
- Android开发的进阶之路
客户端开发工程师,简单地从某几个方面描述一下个人理解里不同的等级: 1.初级的可以熟练使用系统框架提供的组件,搭建所需应用程序: 2.中级的,会对系统框架中如view绘制.broadcast机制.内存 ...
- TEXT、TINYTEXT、MEDIUMTEXT、LONGTEXT选择 和 char varchar varchar2 的区别
TEXT.TINYTEXT.MEDIUMTEXT.LONGTEXT选择: 储存不区分大小写的字符数据 TINYTEXT 最大长度是 255 (2^8 - 1) 个字符. TEXT 最大长度是 6553 ...
- SpringMVC项目,启动项目怎么总是报找不到log4j.properties文件
具体操作:右键项目---->properties--->Java Build Path--->source--->Add Folder --->选择log4.proper ...
- mongo 学习教程(全)
看的是爱酷学习网的视频:http://www.icoolxue.com/album/show/98 01 安装 1.先建mongoDB-data文件夹存数据 2.安装DB 3.设置环境变量:把bin目 ...
- CSS3 功能
1. CSS3在css2的基础上增加了很多功能,ie8以下的浏览器有可能不支持某些属性,增加了很多圆角.渐变.旋转.阴影等效果 2. 文本修饰 text-decoration 属性用来设置或删除文 ...
- bzoj 2818: Gcd GCD(a,b) = 素数
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1566 Solved: 691[Submit][Status] Descript ...
- WPF中父子窗口的层次关系
关于子窗体的层级关系总结一下哈,希望能对大家有些帮助 假设有这样两个窗体:RootWindow,SubWindow,在RootWindow中引发某事件而显示SubWindow 1,如果弹出窗体(比如S ...
- 2017年1月8日 星期日 --出埃及记 Exodus 21:34
2017年1月8日 星期日 --出埃及记 Exodus 21:34 the owner of the pit must pay for the loss; he must pay its owner, ...