注解 @DynamicInsert 和 @DynamicUpdate
如果是在配置文件的话那就是dynamic -insert 和 dynamic-update
这两个注解在一定程度上可以增加与数据库操作相关的速度,可以节省SQL语句的执行时间,提高程序的运行效率。
使用这两个注解只需要在实体类上加入即可,或者在*.hbm.xml配置。这两个注解是boolean值,true或者false。
1.首先使用false来看一下执行的结果,我们就拿更新来举例:
a.数据库的数据是这样的:
b、实体类的代码
C、测试类代码:
执行测试方法后大家可以看到:
我只更新了Description这个属性,但是却把整个对象的属性都更新了,这在一定程度是影响了效率。而且可能并不是我们希望的结果,我们希望的结果是我更改了哪些
字段就只要更新我修改的字段就可以了,接下来我们把@DynamicUpdate(false)改为@DynamicUpdate(true) 测试一下 ,结果如下
神奇了,这就是见证奇迹的时刻,达到了我们的目的,只更新我们修改过的字段。@DynamicInsert我就不举例了。
测试之后可以知道:
在Hibernate中可以利用@DynamicInsert和@DynamicUpdate生成动态SQL语句,即在插入和修改数据的时候,语句中只包括要插入或者修改的字段。
当然还有其他的方式达到这种效果,比如使用session为我们提供的merge方法,也是可以的。
CacheConcurrencyStrategy有五种缓存方式:
CacheConcurrencyStrategy.NONE,不适用,默认
CacheConcurrencyStrategy.READ_ONLY ,只读模式,在此模式下,如果对数据进行更新操作,会有异常;
CacheConcurrencyStrategy.READ_WRITE ,读写模式在更新缓存的时候会把缓存里面的数据换成一个锁,其它事务如果去取相应的缓存数据,发现被锁了,直接就去数据库查询;
CacheConcurrencyStrategy.NONSTRICT_READ_WRITE ,不严格的读写模式则不会的缓存数据加锁;
CacheConcurrencyStrategy.TRANSACTIONAL ,事务模式指缓存支持事务,当事务回滚时,缓存也能回滚,只支持 JTA 环境。
缓存的注释写法如下,加在 Entity 的 java 类上:
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
相关推荐
hiberante3 注解帮助文档hiberante3 注解帮助文档hiberante3 注解帮助文档hiberante3 注解帮助文档hiberante3 注解帮助文档
标题中的“hibernate注解”指的是Hibernate框架中使用的元数据注解,它允许开发者在Java类和属性上直接添加注解,以定义对象-关系映射(ORM)信息,替代传统的XML配置文件。这些注解包括@Entity、@Table、@Column等...
2. 对象持久化:Hibernate的核心在于对象的持久化,这主要由Entity类、Hibernate注解以及Hibernate的元数据处理实现。源码中的`org.hibernate.mapping`包下包含了许多关于对象持久化的类和接口。 3. 数据库交互:...
Controller 类通过 @RequestMapping 注解定义处理特定 URL 的方法,这些方法可以调用业务层的服务。业务层服务通常由 Spring 管理的 beans 提供,这些 beans 可以利用 Spring 的 DI 特性获取所需的依赖。 然后,...
通过注解@Entity声明实体类,@Table指定对应的数据库表,@Id标注主键字段,@Column描述其他字段。例如: ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = ...
6. 映射和实体类:为数据库表创建对应的Java实体类,使用注解(@Entity、@Table等)进行ORM映射。同时,需要配置Hibernate的实体扫描路径,以便SessionFactory能找到这些类。 7. Hibernate配置:在hibernate.cfg....
根据提供的文件信息,“hiberante annotations reference.pdf”主要介绍了Hibernate框架中的注解使用方法与参考。下面将基于标题、描述及部分文档内容进行详细的解析。 ### Hibernate注解概述 Hibernate是一个开源...
在这个DEMO中,Spring2.5.6采用了Annotation注解的方式,使得代码更加简洁,无需XML配置文件,只需在类或方法上添加注解,就可以声明bean和其依赖。Spring还提供了事务管理、AOP(面向切面编程)等功能,增强了应用...
通过使用`@Entity`注解,我们可以将一个Java类声明为实体,并使用`@Table`注解指定对应的数据库表名。此外,`@Id`注解用于标记主键字段,`@GeneratedValue`用于指定主键生成策略。 2. **持久化API**:Hibernate提供...
《Hibernate Annotations参考中文版》是Java开发者非常重要的参考资料,它详细介绍了如何在Java应用程序中使用Hibernate ORM框架进行对象关系映射(ORM)并通过注解方式进行数据持久化。Hibernate ORM是Java领域广泛...
我们使用注解(@Entity、@Table等)来标记实体类,并通过属性注解(@Id、@GeneratedValue等)定义主键。同时,通过@ManyToOne、@OneToMany等关系注解来处理对象间的关联。映射文件(.hbm.xml)是另一种映射方式,...
接着,定义实体类并创建对应的Hibernate映射文件(XML或注解方式),配置Hibernate的SessionFactory,最后编写代码来实例化Session,进行数据的增删改查。通过实践,可以深入理解Hibernate如何将Java对象与数据库...
可以通过XML文件(`.hbm.xml`)或Java注解进行配置。例如,使用XML配置一个User实体: ```xml ``` 或者使用注解方式: ```java @Entity @Table(name = "users") public class User { @Id @...
在Hibernate的映射文件(.hbm.xml)或使用注解的方式,我们需要为BLOB类型的属性设置相应的映射。例如,如果有一个`Document`实体类,其中包含一个名为`content`的BLOB字段,映射可能如下: ```xml <!-- .hbm....
`@Entity`注解标识一个Java类为实体类,`@Table`定义实体对应的表名,`@Column`映射字段等。 4. **Session和Transaction**:`SessionFactory`用于创建`Session`对象,`Session`是操作数据库的主要接口,负责保存、...
这篇详细说明将深入探讨这三个框架如何协同工作,以及如何利用注解(Annotation)来简化配置。 Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建可维护性和扩展性良好的Web应用程序。它提供了丰富的...
对于"one"端,我们将使用`@OneToMany`注解,并指定`mappedBy`属性,这表明另一个实体("many"端)负责维护它们之间的关系。"many"端则使用`@ManyToOne`注解来引用"one"端的实体。 在更新操作时,需要注意以下几点:...
1. **实体和映射**:定义Java类作为数据库中的表,使用注解或XML配置文件描述对象与表之间的映射关系。 2. **Session接口**:是Hibernate的主要工作接口,用于执行查询、保存、更新和删除对象。 3. **HQL和SQL**:...
在“hibernate-release-4.1.8.Final_api.chm”文档中,你可以找到关于Hibernate 4.1.8版本的各种类、接口、方法和注解的详细说明。这个文档将涵盖持久化模型的配置、实体管理、查询语言(HQL)和Criteria API等内容...