在hibernate中, Session.update()方法的修改会把所有的字段更新一遍,但是我们在开发中会常用到只修改部分数据。
public void add(){ Session session=HibernateuUtils.getSessionFactory.getCurrentSession(); session.beginTransaction(); User user=(User)session.get(User.class,1); user.setName("张三"); session.update(); session.beginTransaction().commit(); }
现这种会所有的数据全部更新一遍;
在控制台打印出的sql语句如下:
Hibernate: update User set age=?, birthday=?, name=?, title=? where id=?
在上面的例子中可以看出,我们只需要修改name属性,但是从打印的sql语句得出,update()方法是把所有的属性够修改了一遍。这样如果我们的数据中有文本类型的大量数据,它的执行效率就会很低。
改善它有三种方法:
1、XML中设置property 标签 update = "false" ,如下:我们设置 age 这个属性在更改中不做更改。
<property name="age" update="false"></property>
在Annotation中 在属性GET方法上加上@Column(updatable=false)
@Column(updatable=false) public int getName() { return name; }
但是这种方式不灵活
2、第2种方法··使用XML中的 dynamic-update="true"
<class name="com.sccin.entity.Student" table="student" dynamic-update="true">
<class name="com.sccin.entity.Student" table="student" dynamic-update="true">
<class name="com.hibernnate.User" table="sys_User" dynamic-update="true">
3、使用HQL语句
public void update(){ Session session = HibernateUitl.getSessionFactory().getCurrentSession(); session.beginTransaction(); Query query = session.createQuery("update User t set t.name = 'yangtianb' where id = 1"); query.executeUpdate(); session.getTransaction().commit(); }
打印的sql语句是:
Hibernate: update User set name='yangtianb' where id=1
相关推荐
它们在Java Web开发中非常常见,经常被用于构建企业级应用系统。 - **Spring**:Spring框架的核心功能是依赖注入(DI)和面向切面编程(AOP)。依赖注入使得对象之间的依赖关系可以在运行时动态地解决,降低了组件...
【作品名称】:毕业设计,基于Struts2 + Spring + Hibern实现ACM在线评测系统,可以支持C、C++和Java 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或...
为了管理方便,该系统中Struts Spring的配置文件采用多模块的集成块集成开发方式完成,主要按照功能模块分配。 主要功能描述: 商品展示:主要分为商品预览、商品展示、分类检索功能。 购物车:主要分为添加...
【标题】中的“SpringMVC精品资源--基于WebScoket协议实现的即时聊天项目”表明这是一个关于使用SpringMVC框架构建的Web应用程序,其中整合了WebSocket协议来实现实时通信功能,通常用于构建在线聊天或者实时数据...
在系统中,所有的业务对象都会被映射到数据库的相关表中。具体来说,在应用Hibernate框架时,需要经历以下几个步骤: 1. **编写配置文件**:配置文件包含了数据库连接的基本信息。Hibernate支持两种类型的配置文件...
在数据库操作前,确保已经正确配置了Hibernate的SessionFactory,并且实体类中有一个BLOB类型的字段用于存储图片。 在数据库操作部分,我们需要使用Hibernate的Session对象来保存或更新数据。如果图片是新上传的,...
- 在`struts.xml`中定义Action,确保class属性指向Spring配置文件中定义的Action Bean ID。 8. **分页功能实现** - 可以使用Struts2的分页插件或者自定义分页逻辑。 - 在查询操作中加入分页参数处理,返回指定...
在本节中,我们将深入探讨SpringBoot框架的第六个主题,该主题紧密衔接上一节的内容,即SpringBoot第五节。...例如,如果你的项目中有`spring-boot-starter-data-jpa`依赖,SpringBoot会自动配置JPA和Hibern
在Java Web开发中,可以使用诸如Java WebSocket API这样的技术来实现WebSockets应用。 Spring Framework是一个开源的Java平台,它最初是为了解决企业应用开发中的复杂性而设计的。Spring框架通过提供一系列的模块,...
4. **Session接口:** Session是Hibernate的主要工作接口,用于执行CRUD操作(创建、读取、更新、删除)。它提供了事务管理和对象状态管理功能。 5. **Query和Criteria API:** Hibernate提供了HQL(Hibernate ...
在Hibernate5中,它提供了两种主要的实体管理方式:传统的XML配置和更现代的注解方式。本压缩包文件“hibernate5官方文档样例代码”涵盖了这两种方法,帮助开发者深入理解Hibernate的工作原理。 **配置方案** 在...
- **更新(Update)**:修改对象属性后调用`update()`方法。 ```java user.setName("Jane"); session.update(user); ``` - **删除(Delete)**:调用`delete()`方法删除对象。 ```java session.delete(user); ```...
在5.2.2版本中,该框架进一步提升了性能和易用性,使其成为企业级应用开发中的必备工具。本文将深入探讨Hibernate Validator的核心概念、主要功能以及在实际应用中的使用技巧。 一、Hibernate Validator概述 ...
开始Hibernate实践的第一步是搭建项目环境,这包括添加必要的库依赖、配置Hibernate的hibern.cfg.xml文件以及实体类的映射文件(如.hbm.xml)。同时,需要创建数据库并建立相应的表结构。 3. **实体类与数据表映射...
3. **DAO(Data Access Object)**:数据访问对象,用于封装数据库操作,使用Hibernate提供的API来执行CRUD(创建、读取、更新、删除)操作。 4. **Service**:服务层,处理业务逻辑,通常会调用DAO层的方法来操作...
这意味着如果你的项目使用的是更高版本的Hibernate,可能需要寻找与之兼容的扩展或更新版本。`hbm2java`工具极大地减少了手动编写Java持久化类的工作量,使得模型层的维护变得更加便捷。 2. **ddl2java**:此工具将...
3. **实体类和注解**: Hibernate支持使用注解来标注实体类,例如`@Entity`表示该类是一个实体,`@Table`定义对应的数据库表,`@Id`标识主键字段,`@GeneratedValue`指定主键生成策略,`@Column`定义列等。...
开发者可以将这些注解直接应用到字段或方法上,以定义验证规则。 2. **自定义验证注解**: 除了预定义的注解,Hibernate Validator 还允许开发者创建自定义验证注解,通过实现`ConstraintValidator`接口来定义验证...
【SpringBoot】是一个由Pivotal团队开发的Java框架,其设计目的是简化新Spring应用程序的初始搭建以及开发过程。SpringBoot并非Spring框架...在【数据库操作】上,SpringBoot集成了JPA(Java Persistence API)和Hibern
- `Detect optimistic lock columns`:检测并生成乐观锁相关的字段。 - `Detect many-to-many tables`:检测多对多关联表。 - `Detect one-to-one associations`:检测一对一关联。 ##### 3.2 配置实体生成 - **...