- 浏览: 1229723 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
DML更新及删除
示例:
package com.bjsxt.hibernate; import junit.framework.TestCase; import org.hibernate.Query; import org.hibernate.Session; public class DMLQueryTest extends TestCase { public void testQuery1() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); /** * 使用这种风格的操作,将会造成内存中的对象与数据库中的数据不同步,所以 * 建议尽量少使用:因为hibernate有一级缓存,而更新不更新缓存的数据,只是更新了数据库的数据。 * 应尽量用hibernate的update操作 */ Query updateQuery = session.createQuery("update Student a set a.name=? where a.id in(:ids)"); updateQuery.setParameter(0, "张三"); updateQuery.setParameterList("ids", new Object[]{1, 2}); updateQuery.executeUpdate(); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } } public void testQuery2() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); // Query updateQuery = session.createQuery("delete from Student s where s.id='1'"); Query updateQuery = session.createQuery("delete from Student s where s.id=?").setParameter(0, 2); updateQuery.executeUpdate(); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } } }
我们要更新数据或删除数据,一般会先通过load/get/list查询等使对象进入持久状态,然后直接调用set方法更改属性,hibernate会自动发出一条更新语句进行更新操作。如
public void testQuery3() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); List list = session.createQuery("select s from Student s where s.id=3").list(); for (Iterator iterator = list.iterator(); iterator.hasNext();) { Student object = (Student) iterator.next(); System.out.println(object.getName()); object.setName("yeyeyeye"); } session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } }
上例中查询出来的name值的Student对象进入持久状态,马上调用了setName方法执行时的sql:
Hibernate: select student0_.id as id1_, student0_.name as name1_, student0_.createTime as createTime1_, student0_.classid as classid1_ from t_student student0_ where student0_.id=3 gooooeeeeood Hibernate: update t_student set name=?, createTime=?, classid=? where id=?
上面:gooooeeeeood为原来的name值,再次查询数据库时name变成了yeyeyeye
发表评论
-
Hibernate抓取策略二
2010-05-11 17:56 1070在Classes与Student一对多映射中,我们将Set里面 ... -
Hibernate抓取策略一
2010-05-11 16:29 1315抓取策略指多表关联查询的时候,Hibernate会发出多条sq ... -
Hibernate查询缓存
2010-05-11 01:15 1610二级缓存中,如果不设置“查询缓存”,那么hibernate只会 ... -
Hibernate所需完整类库
2010-05-11 01:08 884附件为最新配置Hibernate所需的包. 由来: 一、下 ... -
Hibernate 二级缓存缺少包出现的异常
2010-05-10 23:29 2325由于二级缓存使用的包org.hibernate.cache.E ... -
转:Hibernate性能优化之二级缓存
2010-05-10 17:28 1132http://chenhongbin007.blog.163. ... -
Hibernate lazy加载FOR 单端关联
2010-05-10 00:54 1309Hibernate单端关联懒加载策略:即在<one-to ... -
Hibernate lazy加载FOR Connection
2010-05-10 00:28 1185Hibernate集合属性的懒加载策略: 在集合属性上, ... -
Hibernate lazy加载FOR Class
2010-05-09 23:51 1040lazy策略可以用在: * <class>标签 ... -
Hibernate性能优化:二级缓存
2010-05-06 16:48 1059hibernate二级缓存 定义步骤: 1、打开缓存, ... -
Hibernate性能优化:一级缓存
2010-05-06 16:33 1114一级缓存与session周期一致,二级缓存与sessionFa ... -
Hibernate悲观锁与乐观锁及事务管理机制
2010-05-06 11:57 1178引用: 悲观锁与乐观锁: http://www.iteye ... -
Hibernate学习笔记博客
2010-05-06 11:32 716网上也有人自学hibernate的笔记 http://hi. ... -
Hibernate与EJB的区别
2010-05-05 18:09 865Hibernate不支持分布式应用 -
Hibernate对象状态
2010-05-05 17:48 1767Hibernate对象有三种状态: 瞬时状态(Transie ... -
Hibernate HQL示例十一:分页查询
2010-05-05 16:21 1128分页查询: select * from t_student ... -
Hibernate HQL示例十:统计查询
2010-05-05 15:57 2108统计函数的使用 count(*) 等 package co ... -
Hibernate HQL示例九:连接查询
2010-05-05 15:38 3533inner join left out join rig ... -
Hibernate HQL示例八:查询对象导航及Implicit Join
2010-05-05 10:32 1680通过Student对象导航到class对象的id 如下: ... -
Hibernate HQL示例七:查询过滤器的使用
2010-05-05 01:58 1318查询过滤器指的是:配置好后,会在该对象上的每一条查询语句上自动 ...
相关推荐
Session是Hibernate中与数据库进行交互的主要接口,用于保存、更新、删除和检索持久化对象。学习这个模块,你会理解如何创建Session,打开和关闭事务,以及执行CRUD操作。 2. **004_Hibernate_HQL**: Hibernate查询...
HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...
- **简单的 POJO 示例**:通过实例展示如何创建满足 Hibernate 持久化需求的简单 POJO 类。 - **实现继承**:讨论如何利用 Hibernate 支持的继承映射策略来映射继承结构。 - **实现 equals() 和 hashCode()**:确保...
14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制结果集内容 15.3. 结果集排序 15.4. 关联 15.5. 动态关联抓取...
由于这些组件未包含在本实例中,所以重点将集中在如何仅使用Hibernate与MySQL进行数据持久化。 **Hibernate核心概念** 1. **实体(Entities)**: 实体类是映射到数据库表的Java类,它们通过注解或XML配置文件与...
HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...
HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...
符合Java习惯的关系数据库持久化 前言 1. 翻译说明 2. 版权声明 1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. ...
HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制结果集内容 15.3. 结果集排序 15.4. 关联 15.5. 动态关联抓取 15.6....
14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制结果集内容 15.3. 结果集排序 15.4. 关联 15.5. 动态关联抓取 15.6. ...
- **HQL**(Hibernate Query Language)是一种面向对象的查询语言,用于执行对持久化对象的检索操作。 - **特点**: - **面向对象**:HQL查询的对象是对象而非数据库表,支持多态性。 - **区分大小写**:HQL中的...
14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制结果集内容 15.3. 结果集排序 15.4. 关联 15.5. 动态关联抓取 15.6. ...
- **持久化(Persistence)**:使用注解或XML配置文件将Java对象映射到数据库表。 - **会话(Session)**:提供临时对象和数据库之间的一致性,负责对象的创建、保存、删除以及查询。 - **查询(Criteria/Query)...
在Hibernate中,映射文件中的`insert`、`update`和`inverse`属性用于控制实体对象的持久化行为: 1. **`insert=false`** 表示该字段不会在执行插入操作时被包含,即字段值不会被持久化到数据库中。 2. **`update=...