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" /> ...
随机推荐
- 如何通过类找到对应的jar包
ctrl+shift+T 然后输入对应类
- 转:Eclipse常用开发插件
以下是我整理的自己开发过程中的常用Eclipse插件,按字母排序: (1) AmaterasUML 介绍:Eclipse的UML插件,支持UML活动图,class图,sequen ...
- android 项目学习随笔八(xUtils的BitmapUtils模块)
xUtils的BitmapUtils模块: 加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象: 支持加载网络图片和本地图片: 内存管 ...
- Spring MVC 和 Spring 总结
1. 为什么使用Spring ? 1). 方便解耦,简化开发 通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合. 2). AOP编程的 ...
- ES6,ES2105核心功能一览,js新特性详解
ES6,ES2105核心功能一览,js新特性详解 过去几年 JavaScript 发生了很大的变化.ES6(ECMAScript 6.ES2105)是 JavaScript 语言的新标准,2015 年 ...
- javascript 金额格式化
金额格式化 example: <!DOCTYPE html> <html> <head> <script src="http://code.jque ...
- excel取消自动超链接的方法:还原和自动更正取消自动超链接
默认设置下,我们在excel表格中输入网址,一般excel都会自动将我们输入的网址自动更正为超链接.当单击该网址,就会打开相应的网页. 如果我们不想要自动添加超链接,请看下面的excel取消自动超链接 ...
- Rsync原理介绍及配置应用
1.前言 基于LAN或WAN的网络应用之间进行数据传输或者同步非常普遍,比如远程数据镜像.备份.复制.同步,数据下载.上传.共享等等.对此,最简单.直接的做法是对数据进行完全复制.然而,数据在网络上来 ...
- Json常见问题
1.创建包含 JSON 语法的 JavaScript 字符串: var txt = '{ "employees" : [' + '{ "firstName":& ...
- Discuz2 x3深入研究内容资料
http://blog.csdn.net/yanhui_wei/article/category/1136193