`

032_CoreAPI_Update

 
阅读更多

1.什么时候用update

1.可以更新一个detached对象,使其更新数据库,变为persistent

 

代码案例:

@Test

public void TestUpdate1(){

Session session = sf.getCurrentSession();

session.beginTransaction();

Teacher t = (Teacher)session.get(Teacher.class, 2);

session.getTransaction().commit();

/*System.out.println("-----detached---------");*/

 

t.setName("zhuhw1111");

Session session2 = sf.getCurrentSession();

session2.beginTransaction();

session2.update(t);

System.out.println("-----persistence---------");

session2.getTransaction().commit();

 

 

}

 

 

 

 

update星期二, 一月 05, 2016

 

vi. update

1.用来更新detached对象,更新完成后转为persist状态

2.更新transient对象会报错

3.更新自己手动设定id的transient对象可以(前提是数据库里有这条记录)

4.persistence状态的对象只要设定不同字段就会发生更新

5.更新部分更改的字段

   a)xml设定property标签的update属性;annotation设定@Column的updatable属性,

不过这种方式很少用,因为不灵活;

   b)使用xml中dynamic-update,JPA1.0 Annotation没有对应的属性,hibernate扩展?

      i.同一个session可以,跨session不行,不过可以用merge()(不重要)

   c)使用HQL(EJBQL)(建议)

 

 

第二种情况

Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

 

因为找不到id。

 

第三种情况

@Test

public void TestUpdate3(){

/*3.更新自己手动设定id的transient对象可以(前提是数据库里这条记录)*/

Teacher t = new Teacher();

t.setId(1);

t.setName("yuzhoua111");

Session session2 = sf.getCurrentSession();

session2.beginTransaction();

session2.update(t);

System.out.println("-----persistence---------");

session2.getTransaction().commit();

 

 

}

 

运行结果ok

 

四、

代码案例:

@Test

public void TestUpdate4(){

Session session = sf.getCurrentSession();

session.beginTransaction();

Teacher t = (Teacher)session.get(Teacher.class, 2);

            //4.persistence状态的对象只要设定不同字段就会发生更新

t.setName("dooder");

session.getTransaction().commit();

}

 

 

虽然看起来没执行update语句,但是t.setName("dooder");改变了缓存中的name数据;

在事务在提交,或是session被关闭的时候

session中保存的对象是否和数据库保存一致,如果不一致,会自动的执行update语句。

对应的数据库中的数据也要做update。

但是同上面三种是一样的,也是做了全部的更新。效率低。

 

运行结果:

执行了update

 

 update

        Teacher 

    set

        birthdate=?,

        _name=?,

        title=?,

        yourWifeName=?,

        zhicheng=? 

    where

        id=?

 

 

五.在Teacher类中加入不更新的注解

@Column(updatable=false)

 

代码案例:

@Test

public void TestUpdate5(){

Session session = sf.getCurrentSession();

session.beginTransaction();

Teacher t = (Teacher)session.get(Teacher.class, 2);

//4.persistence状态的对象只要设定不同字段就会发生更新

t.setName("dooder_zhuhw");

session.getTransaction().commit();

}

 

在不想更新的类中的字段加上注解

@Column(updatable=false)

public String getTitle() {

return title;

执行结果:

 

不加之前

    update

        Teacher 

    set

        birthdate=?,

        _name=?,

        title=?,

        yourWifeName=?,

        zhicheng=? 

    where

        id=?

 

 

在 title加上注解后,执行结果:

  update

        Teacher 

    set

        birthdate=?,

        _name=?,

        yourWifeName=?,

        zhicheng=? 

    where

        id=?

 

在xml对应的配置是,在property update="true|false"

 

 

<hibernate-mapping >

<class name="com.zhuhw.hibernate.model.Student" dynamic-update="true" >

在同一个session里面,在更新完,会发出update语句了。而且只更新改到的东西。

 

如果跨session时。可以不听。

0
1
分享到:
评论

相关推荐

    hibernate_core_API

    Hibernate Core API是Java开发人员在使用Hibernate ORM框架时最常打交道的部分。它是Hibernate框架的核心组件,提供了对数据库操作的基本抽象和实现。版本3.3.1是该API的一个稳定版本,支持多种数据库交互功能,包括...

    Partice_Core

    目录下的说明文件通常包含Partice_Core的安装指南、API文档、示例代码以及常见问题解答,对于初学者来说非常重要,能够帮助他们快速理解和掌握如何使用这个框架。 5. **标签"Partice"**: 这个标签可能是指粒子...

    CRUD.ASPCore.Angular5.WebAPI.ADO-master_.netcore_webapi_

    描述 "Crud operation in asp.net core" 确认了这一点,表明我们将探讨如何在ASP.NET Core Web API中实现创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据的基本功能。 ASP.NET Core 是微软推出...

    ext_core_中文手册

    Ext.select('p.some-class').update('ExtCore成功注入'); }); ``` #### 五、关于ExtCore手册 手册由多位贡献者编写,包括Tommy Maintz、Aaron Conran、James Donaghue、Jamie Avins和Evan Trimboli。中文版手册由...

    .net core api +codefirst+mysql

    《.NET Core API + CodeFirst + MySQL:构建高效稳定的Web服务》 在现代软件开发中,.NET Core已经成为跨平台应用程序开发的首选框架,而MySQL则以其高效、稳定和开源的特点,成为数据库管理系统的热门选择。本文将...

    Hibernate 3.3 core API

    持久化操作包括持久化对象(persist)、加载对象(load)、更新对象(update)和删除对象(delete)。 6. Configuration类:负责加载Hibernate配置文件(hibernate.cfg.xml),初始化SessionFactory。配置文件中...

    hibernate 3.3 core API 英文版

    下面将详细介绍Hibernate 3.3 Core API中的重要知识点。 1. **SessionFactory**:SessionFactory是Hibernate的核心接口,它是线程安全的,负责创建Session实例。SessionFactory由Configuration实例通过读取配置文件...

    LibraryApp:ASP.NET Core API示例

    带有ASP.NET Core(3.1)API的示例API 它包含基本的异步HTTP方法: 得到 邮政 放 删除 发展 库API使用的是PostgreSQL。 对于本地开发环境,请运行以下docker命令: docker run --name local-postgres -e POSTGRES...

    qTip2_中文_API

    1. **qTip2 Core**:这是qTip2的核心部分,它提供了基本的工具提示功能。通过调用$.fn.qtip()方法,你可以为任何DOM元素添加工具提示。它可以接受各种配置选项,如内容、样式、触发方式等,以满足不同需求。 2. **...

    AppUpdate-一个简单、轻量、可随意定制 的Android版本更新库 .zip

    支持Android N 支持Android O 支持中/英文双语 支持自定内置对话框的样式 使用HttpURLConnection下载,未集成其他第三方框架更加详细的文档参阅此处《AppUpdate API文档》DownloadManager:配置文档初始化使用...

    Hibernate Core 3.3.2.GA API+Hibernate_3.2.0_符合Java习惯的关系数据库持久化_zh_CN

    **Hibernate Core API**是Hibernate框架的核心组件,提供了与数据库进行交互的主要接口和类。3.3.2.GA版本是该API的一个稳定版本,包含了许多重要的功能和改进。例如: 1. **SessionFactory**:它是Hibernate的核心...

    .net core2.0 web api创建数据库小例子

    .NET Core 2.0 是微软推出的跨平台、高性能的开源框架,用于构建现代云应用程序,包括Web API。在这个小例子中,我们将探讨如何使用.NET Core 2.0 创建一个简单的Web API来处理数据库操作。 首先,为了创建一个.NET...

    .net core和MongoDB实现web api

    《.NET Core与MongoDB构建Web API:数据库管理和下单系统详解》 在现代软件开发中,.NET Core作为Microsoft推出的跨平台开发框架,以其高效、轻量级和模块化的特点,受到了广泛的关注和使用。MongoDB则是一款强大的...

    .Net Core 开发电商后端API 从0到精通吃透REST-FakeXiecheng.API.zip

    《.Net Core 开发电商后端API 从0到精通》 在当今的互联网时代,电商网站已经成为商业活动的重要组成部分,而构建一个高效、稳定、可扩展的电商后端API是实现这一目标的关键。本教程将带你深入学习如何使用.Net ...

    Item_增删改查_EFCORE2.2中文文档_

    3. **更新(Update)**:更新现有实体时,首先需要找到该实体,然后修改属性,最后调用`SaveChanges()`。比如更新用户邮箱: ```csharp using (var context = new MyDbContext()) { var user = context.Users....

    Test_opencv_test程序_test_mysqlc#_Ubiety.Dns.Core_

    首先,OpenCV是计算机视觉领域的首选库,其C#版本提供了丰富的API供开发者使用。在本程序中,我们能看到如何利用OpenCV进行图像的读取、显示、处理和分析。这包括基本的图像加载函数如`imread`,用于显示图像的`...

    TMS570LS系列FLASH读写操作

    2. **实现从FLASH复制API到RAM的汇编函数**:为了确保Flash API能够顺利执行,还需要在`sys_core.asm`文件中添加一个用于将Flash API从闪存复制到RAM中的汇编函数`_copyAPI2RAM_`。具体实现如下: ```assembly ;--...

    Nucleus-Vue启动应用程序模板,该模板在后端使用ASP.NET Core API分层体系结构并基于JWT进行身份验证-Vue.js开发

    本地环境选择Nucleus.Web.Api项目“设置为启动项目”打开“软件包管理器控制台”,然后将默认项目选择为src / Nucleus.EntityFramework运行update-database命令以创建数据库。 运行(F5或CTRL + F5)Web API项目冷杉

    ROS-Android

    - 在Android Studio中,进入“File” -&gt; “Settings” -&gt; “Android SDK”,安装所需的Build Tools版本(如25.0.2)和Android APIs版本(如API Level 10、13、15、18等),以便支持ROS Android项目的编译。...

Global site tag (gtag.js) - Google Analytics