采用JUnit测试,继承TestCase

  1. import java.util.Date;
  2.  
  3. import junit.framework.TestCase;
  4.  
  5. import org.hibernate.Session;
  6. import org.hibernate.SessionFactory;
  7. import org.hibernate.cfg.Configuration;
  8.  
  9. public class Client extends TestCase{
  10.  
  11. Configuration config = new Configuration().configure();
  12. SessionFactory factory = config.buildSessionFactory();
  13. Session session = factory.openSession();

一.添加数据

  1. public void testAdd1(){
  2. //user对象进入transient状态
  3. User user = new User();
  4. user.setName("用户1");
  5. user.setCreateTime(new Date());
  6. user.setExpireTime(new Date());
  7. try{
  8. //开启事务
  9. session.beginTransaction();
  10. //session管理user对象,进入Persistent状态
  11. session.save(user);
  12. //提交事务,把内存的改变提交到数据库保存
  13. session.getTransaction().commit();
  14. } catch(Exception e){
  15. e.printStackTrace();
  16. session.getTransaction().rollback();
  17. } finally {
  18. if(session != null && session.isOpen()){
  19. //session.关闭,user对象进入detached状态
  20. session.close();
  21. }
  22. }
  23. }

二.查询数据
使用get查询,没有延迟加载,把需要的一次性都查询出来
使用load查询,有延迟加载,只把需要显示的查询出来,如果还需要查询其他的数据,再次进行查询(在一定程度上提高性能)
查询一条数据

  1. public void testGetOrLoad(){
  2. // User user = (User)session.get(User.class, "2c90e481596c44da01596c44dba30001");
  3. User user = (User)session.load(User.class, "2c90e481596c44da01596c44dba30001");
  4. System.out.println(user.getName());
  5. }

查询表中的所有数据

  1. public void testQuery(){
  2. try{
  3. Query query = session.createQuery("from User");
  4. //建议使用这种方式读取数据,一次都查询出来
  5. List<User> userList = query.list();
  6. for(Iterator<User> iter = (Iterator) userList.iterator(); iter.hasNext(); ){
  7. User user = iter.next();
  8. System.out.println(user.getName());
  9. }
  10. //使用迭代器的方式,每个对象都要查询一次,大量查询时会增加数据库的负担和延迟
  11. // Iterator<User> iter = query.iterate();
  12. // while(iter.hasNext()){
  13. // User user = iter.next();
  14. // System.out.println(user.getName());
  15. // }
  16. } catch(Exception e){
  17. e.printStackTrace();
  18. } finally{
  19.  
  20. }
  21. }

三.修改数据

  1. public void testUpdate(){
  2. //需要先把数据从数据库中查询出来到对象中,修改对象,再update对象
  3. User user = (User)session.load(User.class, "2c90e481596c44da01596c44dba30001");
  4. user.setName("修改用户");
  5. try{
  6. session.beginTransaction();
  7. session.update(user);
  8. session.getTransaction().commit();
  9. } catch(Exception e){
  10. e.printStackTrace();
  11. session.getTransaction().rollback();
  12. } finally {
  13. if(session != null && session.isOpen()){
  14. session.close();
  15. }
  16. }
  17. }

四:删除数据

  1. public void testDelete(){
  2. //需要先把数据从数据库中查询出来到对象中,再delete对象
  3. User user = (User)session.load(User.class, "2c90e481596c44da01596c44dba30001");
  4. try{
  5. session.beginTransaction();
  6. session.delete(user);
  7. session.getTransaction().commit();
  8. } catch(Exception e){
  9. e.printStackTrace();
  10. session.getTransaction().rollback();
  11. } finally {
  12. if(session != null && session.isOpen()){
  13. session.close();
  14. }
  15. }
  16. }

hibernate学习笔记之四 Hibernate的增删改查的更多相关文章

  1. Mysql学习笔记(六)增删改查

    PS:数据库最基本的操作就是增删改查了... 学习内容: 数据库的增删改查 1.增...其实就是向数据库中插入数据.. 插入语句 insert into table_name values(" ...

  2. mysql学习笔记一 —— 数据的增删改查

    1.连接mysql mysql 直接回车(是以root身份,密码空,登陆的是本机localhost) [root@www mysql]# mysql -uroot -p123 -S /var/lib/ ...

  3. Mybatis学习笔记之---CRUD(增删改查)

    Mybatis的CRUD(增删改查) 1.pom.xml <dependencies> <dependency> <groupId>junit</groupI ...

  4. Hibernate5笔记2--单表的增删改查操作

    单表的增删改查操作: (1)定义获取Session和SessionFactory的工具类: package com.tongji.utils; import org.hibernate.Session ...

  5. MVC3+EF4.1学习系列(二)-------基础的增删改查和持久对象的生命周期变化

    上篇文章中 我们已经创建了EF4.1基于code first的例子  有了数据库 并初始化了一些数据  今天这里写基础的增删改查和持久对象的生命周期变化 学习下原文先把运行好的原图贴来上~~ 一.创建 ...

  6. MongoDB学习总结(二) —— 基本操作命令(增删改查)

    上一篇介绍了MongoDB在Windows平台下的安装,这一篇介绍一下MongoDB的一些基本操作命令. 下面我们直奔主题,用简单的实例依次介绍一下. > 查看所有数据库 (show dbs) ...

  7. Django基础学习四_数据库的增删改查

    今天主要学习两个东西 1.如何对数据库做增删改查 2.如果将数据库中的数据用html的方式返回到前台 一.对数据库中增删改查操作 1.首先需要先见表,见表的方法我们在“http://www.cnblo ...

  8. mongodb数据库学习【安装及简单增删改查】

    //@desn:mongodb数据库学习 //@desn:码字不宜,转载请注明出处 //@author:张慧源  <turing_zhy@163.com> //@date:2018/08/ ...

  9. Python学习---django之ORM的增删改查180125

    模型常用的字段类型参数 <1> CharField        #字符串字段, 用于较短的字符串.        #CharField 要求必须有一个参数 maxlength, 用于从数 ...

随机推荐

  1. 前端优化 - 打开速度1s

    先看一下网页的加载流程: 1.解析html结构2.加载外部脚本和样式表文件3.解析并执行脚本(脚本会阻塞页面的加载)4.DOM树构建完成 (DOMContentLoaded)5.加载图片等外部文件6. ...

  2. haxe jni调用输入法

    public static void startInputDialog(final String title, final String text, final String buttonLabel, ...

  3. c# 如何中List<object>中去掉object对象中的重复列数据?

    //去掉重复 var title = modelList.GroupBy(m => m.Title.ToLower().Trim()).Select(m => new { ID = m.F ...

  4. Unity插件使用总结

    移动文件夹位置会引起错误的插件:EasySave2.MaterialUI.Gamestrap UI.Beautify

  5. [DataMining]WEEK1 - text-retrieval and search engine

    What does a computer have to do in order to understand a natural language sentence? What is ambiguit ...

  6. Django--全文检索功能

    经过两个月的时间,毕设终于算是把所有主要功能都完成了,最近这一周为了实现全文检索的功能,也算是查阅了不少资料,今天就在这里记录一下,以免以后再用到时抓瞎了~ 首先介绍一下我使用的Django全文检索逻 ...

  7. 自定义委托类型 - .Net自带委托类型

    委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递. 与其他的类不同,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用. 一.自定义委托类型 1.语法结构:访问修 ...

  8. 不可变数组NSArray

    //数组里面不允许存放基本数据类型,只能存放“对象” NSArray *array = [NSArray arrayWithObjects:@"周星星",@"尹天仇&qu ...

  9. POJ 1163 The Triangle(简单动态规划)

    http://poj.org/problem?id=1163 The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissi ...

  10. 工作总结_sql

    今天客户叫导入数据,因为存在特殊字符,快把我给玩死了,,所以请教...总结 sql 数据导入excel  存在特殊字符引起的数据缺失 利用字符方式    :   select  a.OpenID+', ...