Hibernate征途(三)之CRUD
上篇博客《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相关推荐
- (详细)Hibernate查询技术(Query、Session、Criteria),Hibernate的三种状态,Hibernate集合struts2实现登录功能(二)
一.Hibernate的三种查询方式(掌握) Hibernate中提供了三种查询方式: 1)Session的查询:按主键查询查询,方法为get或load 2)Query的查询:使用HQL语句或SQL语 ...
- 深入hibernate的三种状态
转载自:http://www.cnblogs.com/xiaoluo501395377/p/3380270.html 学过hibernate的人都可能都知道hibernate有三种状态,transie ...
- 三、CRUD(增删改查)
三.CRUD(增删改查) 3.1.namespace namespace中的包名需要和mapper接口的包名一致! 1. id:就是对应的namespace中的方法名:2. resultType: ...
- 举例理解Hibernate的三种状态:瞬时态、持久态、托管(即游离态)态及互相转化
举例理解Hibernate的三种状态 初学Hibernate,了解到Hibernate有三种状态:transient(瞬时状态),persistent(持久化状态)以及detached(游离状态). ...
- Java程序员从笨鸟到菜鸟之(五十二)细谈Hibernate(三)Hibernate常用API详解及源码分析--csdn 曹胜欢...
新接触一个框架的目的就是想利用这个框架来为我们做一些工作,或者是让他来简化我们的工作,利用这个框架无非就是要利用这个框架所给我们提供的API去操作我们的数据,所以利用一个框架的好坏很大一部分取决于你对 ...
- Hibernate(三) - hibernate 表操作-多对多配置
Hibernate 的一对多关联映射 之前在学习 Hibernate 的时候,其实都是单表的操作.在实际的开发当中,比如做一个商城,就需要好多张数据库表,表与表之间是有关系的.之前些做一些关联查询或者 ...
- Hibernate征途(四)之映射 序
映射是Hibernate中重要的一部分,是使用Hibernate的基础,前几篇博客写的都是如何将关系模型中的数据与对象模型关联起来,是数据的对应:这篇博客要说的是映射,是关系的对应:如何将关系模型中的 ...
- Hibernate的三种检索策略
1 N+1问题 Hibernate的Session缓存中存放的是相互关联的对象图,默认情况下,当从数据库中加载一个对象的时候,会同时加载它所关联的其他对象.例如:Clazz(班级)跟Student(学 ...
- jooq多表查询_JOOQ 入门(三)-- CRUD 语句
序言 上一篇关于JOOQ的随笔介绍了Springboot项目的创建以及JOOQ 代码生成器的使用. 那么在上次的项目基础上来看看实际的JOOQ怎么使用. 准备工作 先将项目的目录结构创建好 接下来CR ...
最新文章
- .gitmodule中没有为非子模块的路径找到子模块映射
- python3 编译优化 --enable-shared --enable-optimizations
- RTMP流媒体播放过程:握手,建立连接,建立流,播放
- 不想“被out”?来看看现在的开发者都在做什么
- 注意力机制可解释吗?这篇ACL 2019论文说……
- wordpress后台样式_如何在WordPress中以不同的方式设置单个类别的样式
- 黑苹果升级更新macOS 13 Ventura 问题整理
- 【Android】实现生成二维码、条形码和扫描二维码的功能
- 从零开始成为一名合格的数据分析师:为什么必须学统计学?
- 主成分分析与其在人脸识别中的应用
- 计算机专业拜年语,南昌理工学院计算机信息工程学院给您拜年啦!!
- android高德地图api驾车路线规划,驾车路径规划-调起高德地图-示例中心-JS API 示例 | 高德地图API...
- 5.Hiveguigun滚(ノ`Д)ノ竟然竞争谨慎谨慎谨慎哈喇子罢工八公
- Android NDK 概述(Android NDK Overview)
- SpringBoot漏洞复现
- BB10请求接收NFC事件
- android v4l2 4路视频,美乐威推出四链路3G-SDI接口的4K M.2采集卡
- 优美动听的葫芦丝名曲
- 【2315. 统计星号】
- 类似微信,微博,QQ的头像截图功能, 图片支持缩放
热门文章
- Android 怎么退出整个应用程序?[转]
- volatile 用处
- 贴一个数据结构老师布置的作业(各种排序) c 语言实现
- ES11新特性_动态import---JavaScript_ECMAScript_ES6-ES11新特性工作笔记065
- STM32工作笔记0013---认识UCOS系统
- 嵌入式工作笔记0001---认识SoC
- android学习笔记---android常用的软件布局方式,使用方法总结
- encoder.cpp(340) [feature_index.open(templfile, trainfile)]feature_index.cpp(174) [max_size == size]
- 无人驾驶(大安全概念)
- 随想录(程序员的缺点)