`
xiaotao.2010
  • 浏览: 216942 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Hibernate-学习笔记04-数据更新方法

阅读更多

 

试验目的:

更新数据库中某一字段,其余字段不变。

 

(1)使用Update()方法

查阅Hibernate API(Hibernate_3.2.0_Reference_zh_CN.chm)得到Update()方法有:

update(Object object)
update(Object object, Serializable id)
update(String entityName, Object object)
update(String entityName, Object object, Serializable id)

 

很不幸运的事我的MyEclipse中只有一下方法(我用的是hibernate3.3.2,比API版本要高...我表示无语)

update(Object object)

update(String entityName, Object object)

 

测试代码:

	Teacher teacher = new Teacher();
		teacher.setId(4);
		teacher.setName("Marry");
		teacher.setBirthDate(new Date());
		
		SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
		Session session = sf.getCurrentSession();
		session.beginTransaction();
                session.update(teacher);
		session.getTransaction().commit();
 
生成的Hibernate SQL 写道
update
_Teacher
set
birthDate=?,
name=?,
title=?
where
id=?

 数据库中结果:

  4 | 2011-04-13 19:52:52 | Marry | NULL

 

结论:使用Update()方法来更新数据得到的是数据对象的整体更新,不存在保留未修改选项,此方法不符合要求。

 

 

(2)使用Persistence 来更新

代码:

 

	SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
		Session session = sf.getCurrentSession();
		session.beginTransaction();
		teacher = (Teacher)session.get(Teacher.class, 5);
		teacher.setName("Marry");
		session.getTransaction().commit();

生成SQL语句

update
        _Teacher
    set
        birthDate=?,
        name=?,
        title=?
    where
        id=?

 

数据库显示结果:

  5 | 2011-04-13 08:22:21 | Marrys | XX

 

结论:数据库中只修改了某一字段值,其余没有改变,符合要求。

 

 

(3)      延伸一下问题,若是使用persistence 来更新数据中的对象信息时Hibernate会发送全部字段的更新信息,有时候会降低效率,若是只发送需要修改的某一字段的信息?

      HQL语句 : Hibernate Quary Language 是Hibernate使用的面向对象的数据查询语言。

代码:

	Teacher teacher = new Teacher();
		
		SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
		Session session = sf.getCurrentSession();
		session.beginTransaction();
		Query query = session.createQuery("update Teacher t set t.name='Toms' where t.id=5");
		query.executeUpdate();
		session.getTransaction().commit();
		

 Hibernate产生SQL语句:

 update
        _Teacher
    set
        name='Toms'
    where
        id=5

数据显示结果:

 5 | 2011-04-13 08:22:21 | Toms  | XX

 

结论:该方法同样可以满足实验要求,同时又能做到执行时候只发送需要修改字段的SQL语句,同时有使用到了HQL面向对象的语句,这种方法在项目中比较常用,是解决Update的首选方法。

 

 

 

分享到:
评论

相关推荐

    hibernate-学习笔记

    【hibernate-学习笔记】 Hibernate 是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中管理关系数据库数据的便捷方式。本学习笔记将深入探讨Hibernate的核心概念、配置、实体映射、查询...

    Hibernate - 学习笔记

    在使用Hibernate进行数据操作时,主要涉及三类文件:Java类(实体类)、映射文件(如test.hbm.xml)和数据库的表结构。 首先,实体类是Hibernate的核心,它代表了数据库中的表。在设计实体类时,通常会遵循面向对象...

    hibernate-note学习笔记

    ### hibernate-note学习笔记知识点详解 #### 一、对象持久化 **1.1 概述** 对象持久化是指将程序中的对象状态保存到非易失性存储中(如硬盘或磁盘等),以便在系统重启后仍能保留这些状态。这种技术常用于将对象的...

    Hibernate -annotation 学习笔记

    【Hibernate - Annotation 学习笔记】 Hibernate 是一个流行的开源Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发人员可以使用面向对象的方式处理数据存储。Annotation是Hibernate提供的一种元...

    Hibernate学习笔记特别详细

    《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...

    Hibernate---我的Hibernate学习笔记.doc

    ### Hibernate—我的Hibernate学习笔记 #### 一、对象持久化的理论与实践 ##### 对象持久化概念 对象持久化指的是将内存中的对象状态保存至外部持久性存储设备(如硬盘),以便于日后需要时能够恢复其状态。这一...

    Hibernate学习笔记整理

    Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...

    hibernate框架学习笔记整理

    ### hibernate框架学习笔记整理 #### 一、Hibernate框架简介 **Hibernate框架**是一种用于Java应用的**对象关系映射**(Object-Relational Mapping, ORM)解决方案,它允许开发者使用面向对象的方式操作数据库中的表...

    hibernate个人学习笔记完整版

    【hibernate个人学习笔记完整版】是一份详尽的资料,涵盖了Hibernate框架的基础到高级应用,旨在帮助学习者深入理解和掌握这一强大的Java对象关系映射(ORM)工具。Hibernate作为Java开发中的主流ORM框架,它极大地...

    hibernate学习笔记

    在本篇《Hibernate学习笔记》中,我们将深入...以上就是Hibernate学习笔记的一些核心概念和操作示例,涵盖了数据的增删查改以及事务管理。通过理解和实践这些知识点,开发者可以更有效地利用Hibernate进行数据库操作。

    hibernate3.2学习笔记

    ### Hibernate 3.2 学习笔记:一对一主键关联详解 #### 一、一对一主键关联概述 在本节中,我们将详细探讨 Hibernate 3.2 中的一对一关联关系,尤其是通过主键实现的双向关联。这种关联通常出现在需要紧密绑定两个...

    Hibernate3 学习笔记.ppt

    【一、O/R Mapping】 O/R Mapping,即对象关系映射,是将对象模型与关系数据库之间进行映射的技术。在Hibernate中,O/R Mapping允许开发者以面向对象的方式...学习和掌握Hibernate有助于提升Java应用的数据管理能力。

    hibernate框架开发2016版视频 四天学习笔记完整版

    【hibernate框架开发2016版视频 四天学习笔记完整版】 在软件开发领域,特别是Java Web开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作,使开发者可以更专注于业务逻辑而不是...

    Hibernate3.2学习笔记

    《Hibernate3.2学习笔记详解》 在Java开发中,ORM(Object-Relational Mapping)框架如Hibernate极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是底层的数据存取。本篇学习笔记将深入探讨Hibernate...

    hibernate_day02笔记

    【hibernate_day02笔记】的文档主要涵盖了学习Hibernate框架的基础内容,包括ORM思想、Hibernate入门案例、配置文件解析、核心API的使用等。以下是详细的讲解: **ORM思想**: ORM(Object-Relational Mapping)即...

    Hibernate 的学习笔记

    ### Hibernate 学习笔记知识点详解 #### 一、Hibernate 简介 - **概念**:Hibernate 是一种“对象/关系映射”(Object/Relational Mapping,简称 ORM)技术,用于解决 Java 应用程序与关系型数据库交互的问题。 - *...

    Hibernate学习笔记与总结

    **Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...

    hibernate4框架学习笔记

    【hibernate4框架学习笔记】 Hibernate是一款强大的ORM(Object-Relational Mapping)框架,它在Java开发中扮演着至关重要的角色,通过提供对象与数据库之间的映射,解决了对象模型和关系模型之间的“阻抗不匹配”...

Global site tag (gtag.js) - Google Analytics