上篇博客《Hibernate征途(二)之基础与核心》介绍了Hibernate的基础内容和核心内容,这篇博客简单实践一下。第一篇博客也说过Hibernate是一种JDBC的简化方案,既然是和数据库相关的操作,自然离不开CRUD,也就是常说的增删改查:

C reate new records
    R etrieve existing records
    U pdate existing records
    D elete existing records.

七步骤

从步骤来看,Hibernate的使用都可以分为七个步骤,如下图:

即:

  • 编写实体类,配置实体类的映射。
  • 创建SessionFactory
  • 创建并开启一个session
  • 针对session,开启事务
  • 进行数据库增删改查操作
  • 提交或回滚事务
  • 关闭session

实例

既然说到简单,就把简单贯彻到底,下面以保存一个用户为例,注意这七个步骤的使用。

User.java

public class User {private String id;private String name;private String password;private Date createTime;private Date expireTime;/**……对应的setters和getters**/
}

映射文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping ><class name="com.tgb.hibernate.User" ><id name="id"><generator class="uuid" /></id><property name="name" /><property name="password" /><property name="createTime" /><property name="expireTime" /></class>
</hibernate-mapping>

Utils

封装对SessionFactory和Session常用的操作。

public class HibernateUtils {private static SessionFactory factory;static{try {//get configurationConfiguration cfg=new Configuration().configure();//create session factoryfactory=cfg.buildSessionFactory();} catch (Exception e) {e.printStackTrace();}}public static Session getSession(){return factory.openSession();}public static void closeSession(Session session){if (session!=null) {if (session.isOpen()) {session.close();}}}public static SessionFactory getSessionFactory(){return factory;}
}

测试保存

public void testSave1()
{Session session=null;try {//get sessionsession=HibernateUtils.getSession();//open transactionsession.beginTransaction();//create userUser user=new User()User user =new User();user.setCreateTime(new Date());user.setExpireTime(new Date());user.setName("zher");user.setPassword("123");//execute savesession.save(bird);//commit transactionsession.getTransaction().commit();} catch (Exception e) {session.getTransaction().rollback();e.printStackTrace();}finally{//close sessionHibernateUtils.closeSession(session);}
}

其它操作

save()仅是session操作的一种,除此之外,还有load()/get()、delete()、update(),使用类似不再赘述。

总结

这应该是Hibernate最简答的一个例子,这篇博客用于对上篇博客中三种状态和五个个核心接口使用的理解,下篇博客将介绍各式各样的映射,That' all。

Hibernate征途(三)之CRUD相关推荐

  1. (详细)Hibernate查询技术(Query、Session、Criteria),Hibernate的三种状态,Hibernate集合struts2实现登录功能(二)

    一.Hibernate的三种查询方式(掌握) Hibernate中提供了三种查询方式: 1)Session的查询:按主键查询查询,方法为get或load 2)Query的查询:使用HQL语句或SQL语 ...

  2. 深入hibernate的三种状态

    转载自:http://www.cnblogs.com/xiaoluo501395377/p/3380270.html 学过hibernate的人都可能都知道hibernate有三种状态,transie ...

  3. 三、CRUD(增删改查)

    三.CRUD(增删改查) 3.1.namespace ​ namespace中的包名需要和mapper接口的包名一致! 1. id:就是对应的namespace中的方法名:2. resultType: ...

  4. 举例理解Hibernate的三种状态:瞬时态、持久态、托管(即游离态)态及互相转化

    举例理解Hibernate的三种状态 初学Hibernate,了解到Hibernate有三种状态:transient(瞬时状态),persistent(持久化状态)以及detached(游离状态). ...

  5. Java程序员从笨鸟到菜鸟之(五十二)细谈Hibernate(三)Hibernate常用API详解及源码分析--csdn 曹胜欢...

    新接触一个框架的目的就是想利用这个框架来为我们做一些工作,或者是让他来简化我们的工作,利用这个框架无非就是要利用这个框架所给我们提供的API去操作我们的数据,所以利用一个框架的好坏很大一部分取决于你对 ...

  6. Hibernate(三) - hibernate 表操作-多对多配置

    Hibernate 的一对多关联映射 之前在学习 Hibernate 的时候,其实都是单表的操作.在实际的开发当中,比如做一个商城,就需要好多张数据库表,表与表之间是有关系的.之前些做一些关联查询或者 ...

  7. Hibernate征途(四)之映射 序

    映射是Hibernate中重要的一部分,是使用Hibernate的基础,前几篇博客写的都是如何将关系模型中的数据与对象模型关联起来,是数据的对应:这篇博客要说的是映射,是关系的对应:如何将关系模型中的 ...

  8. Hibernate的三种检索策略

    1 N+1问题 Hibernate的Session缓存中存放的是相互关联的对象图,默认情况下,当从数据库中加载一个对象的时候,会同时加载它所关联的其他对象.例如:Clazz(班级)跟Student(学 ...

  9. jooq多表查询_JOOQ 入门(三)-- CRUD 语句

    序言 上一篇关于JOOQ的随笔介绍了Springboot项目的创建以及JOOQ 代码生成器的使用. 那么在上次的项目基础上来看看实际的JOOQ怎么使用. 准备工作 先将项目的目录结构创建好 接下来CR ...

最新文章

  1. .gitmodule中没有为非子模块的路径找到子模块映射
  2. python3 编译优化 --enable-shared --enable-optimizations
  3. RTMP流媒体播放过程:握手,建立连接,建立流,播放
  4. 不想“被out”?来看看现在的开发者都在做什么
  5. 注意力机制可解释吗?这篇ACL 2019论文说……
  6. wordpress后台样式_如何在WordPress中以不同的方式设置单个类别的样式
  7. 黑苹果升级更新macOS 13 Ventura 问题整理
  8. 【Android】实现生成二维码、条形码和扫描二维码的功能
  9. 从零开始成为一名合格的数据分析师:为什么必须学统计学?
  10. 主成分分析与其在人脸识别中的应用
  11. 计算机专业拜年语,南昌理工学院计算机信息工程学院给您拜年啦!!
  12. android高德地图api驾车路线规划,驾车路径规划-调起高德地图-示例中心-JS API 示例 | 高德地图API...
  13. 5.Hiveguigun滚(ノ`Д)ノ竟然竞争谨慎谨慎谨慎哈喇子罢工八公
  14. Android NDK 概述(Android NDK Overview)
  15. SpringBoot漏洞复现
  16. BB10请求接收NFC事件
  17. android v4l2 4路视频,美乐威推出四链路3G-SDI接口的4K M.2采集卡
  18. 优美动听的葫芦丝名曲
  19. 【2315. 统计星号】
  20. 类似微信,微博,QQ的头像截图功能, 图片支持缩放

热门文章

  1. Android 怎么退出整个应用程序?[转]
  2. volatile 用处
  3. 贴一个数据结构老师布置的作业(各种排序) c 语言实现
  4. ES11新特性_动态import---JavaScript_ECMAScript_ES6-ES11新特性工作笔记065
  5. STM32工作笔记0013---认识UCOS系统
  6. 嵌入式工作笔记0001---认识SoC
  7. android学习笔记---android常用的软件布局方式,使用方法总结
  8. encoder.cpp(340) [feature_index.open(templfile, trainfile)]feature_index.cpp(174) [max_size == size]
  9. 无人驾驶(大安全概念)
  10. 随想录(程序员的缺点)