在插入时运行的触发器
<property name="created" insert="false" update="false"
column="CREATED" type="timestamp" />
User user = new User();
session.save(user);
session.flush();
session.refresh(user);
System.out.println(user.getCreated());
refresh():利用数据库中的当前值,刷新处于持久化状态的内存实例
<property name="created"
type="timestamp"
column="CREATED"
generated="insert"
insert="false"
update="false"/>
@Temporal(TemporalType.TIMESTAMP)
@org.hibernate.annotations.Generated(
org.hibernate.annotations.GenerationTime.INSERT
)
@Column(name = "CREATED", insertable = false, updatable = false)
private Date created;
<version name="version"
column="OBJ_VERSION"
generated="always"/>
...
<timestamp name="lastModified"
column="LAST_MODIFIED"
generated="always"/>
...
<property name="lastModified"
type="timestamp"
column="LAST_MODIFIED"
generated="always"
insert="false"
update="false"/>
@Version
@org.hibernate.annotations.Generated(
org.hibernate.annotations.GenerationTime.ALWAYS
)
@Column(name = "OBJ_VERSION")
private int version;
@Version
@org.hibernate.annotations.Generated(
org.hibernate.annotations.GenerationTime.ALWAYS
)
@Column(name = "LAST_MODIFIED")
private Date lastModified;
@Temporal(TemporalType.TIMESTAMP)
@org.hibernate.annotations.Generated(
org.hibernate.annotations.GenerationTime.ALWAYS
)
@Column(name = "LAST_MODIFIED", insertable = false, updatable = false)
private Date lastModified;
强制hibernate利用SQL SELECT来获取当前数据库的快照
<class name="Item"
table="ITEM"
select-before-update="true">
...
</class>
@Entity
@org.hibernate.annotations.Entity(selectBeforeUpdate = true)
public class Item { ... }
分享到:
相关推荐
Hibernate 与数据库中的触发器协同工作时, 会造成两类问题 1、触发器使 Session 的缓存中的持久化对象与数据库中对应的数据不一致:触发器运行在数据库中, 它执行的操作对 Session 是透明的 Session 的 解决...
此外,为了提高代码的可维护性和可读性,可以考虑使用ORM(对象关系映射)框架,如Hibernate或MyBatis。这些框架提供了更高级别的抽象,可以简化数据库操作,包括创建和管理触发器。 在"触发器自动生成代码.txt...
2. 特殊功能:某些数据库支持的特殊功能可能需要在方言中特别处理,例如存储过程、触发器等。 3. 性能优化:通过调整方言,可以针对特定数据库进行SQL优化,提高查询性能。 4. 兼容性测试:在更换数据库或更新数据库...
- 这种转换可能涉及到数据类型、SQL语法、存储过程、触发器等的差异。在迁移过程中,需要对表结构、索引、视图、存储过程等进行相应的调整,确保它们在新数据库中能正常工作。 7. **对UTF-8数据库的特殊处理** - ...
Oracle提供了丰富的SQL扩展,以及PL/SQL编程语言,可以进行存储过程、触发器等高级数据库操作。 **整合SpringMVC、Hibernate和Oracle** 整合这三个组件,首先需要在项目中引入相应的库依赖,如SpringMVC和Hibernate...
开发者可以定义作业和触发器,灵活设置执行时间,实现自动化的工作流。 4. **角色权限管理**: 在这个系统中,角色和权限的管理是核心部分。通常,一个用户可以被分配一个或多个角色,每个角色拥有不同的权限集。...
此外,它还可以定义主键生成策略、索引、触发器等。 3. **关联映射**:在Hibernate XML中,关联映射是非常重要的一部分。这里提到的`cascade`和`inverse`属性是两个关键的概念。 - **cascade**:级联操作是指当对...
用java编写一个简易的网吧计费系统,用hibernate框架,sql2008数据库或者是2005数据库,用户sa密码123456,在数据库中用到触发器,在程序中使用线程来计算钱 实现的主要功能是练习线程、hashmap、hibernate、全局...
订单项目是IT行业中常见的开发任务,本项目特别提到了使用`Struts2.0`和`Hibernate3.x`这两个框架的整合。这是一个基于Java的Web应用程序开发实例,它利用了MVC(Model-View-Controller)设计模式来构建前端与后端的...
SQL Server 2000是微软发布的一款早期的关系型数据库管理系统,而SQL Server 2005则是其后续版本,带来了许多改进,包括增强的性能、安全性、支持XML、存储过程、触发器等新特性,以及更友好的管理工具如SQL Server...
- 通过执行数据库触发器选择唯一主键的行并返回主键值。 8. **SeqHiLo**: - 类似于`hiLo`策略,但使用数据库序列(sequence)作为高位值来源。 9. **Sequence**: - 使用序列生成标识符。 - 适用于DB2、...
- 数据库schema层次验证:通过数据库触发器等方式实现。 - Hibernate基于事件的验证:利用Hibernate提供的事件监听机制。 - 程序级验证:在业务逻辑中手动进行验证。 #### 七、Hibernate与Lucene集成 为了提高...
5. 触发器和事件监听器:在特定操作前后执行自定义逻辑。 6. 批量操作:优化大批量数据的处理,如Session.saveOrUpdateAll()。 六、最佳实践 1. 使用注解:尽量避免XML映射文件,使用注解进行ORM配置。 2. 事务管理...
MSSQL支持SQL标准,包括T-SQL(Transact-SQL)扩展,用于执行数据库操作、创建存储过程和触发器。在与SpringMVC或Hibernate集成时,MSSQL通常作为后端数据存储,通过JDBC(Java Database Connectivity)接口进行通信...
- **触发器与Session缓存不一致**:在数据库中定义的触发器可能会在Hibernate不知情的情况下修改数据,导致Session缓存中的数据与数据库中的实际数据不同步。为避免这种问题,开发者需要谨慎设计触发器逻辑,并可能...
本篇文章将详细介绍如何在MyEclipse中配置Hibernate,以及相关的数据库操作如SQL语句的编写,包括表的创建、约束、触发器和序列。 1. **MyEclipse配置Hibernate** 配置Hibernate在MyEclipse中通常包括以下步骤: ...
9.1 与触发器协同工作 9.2 利用拦截器(Interceptor)生成审计日志 9.3 Hibernate的事件处理机制 9.4 批量处理数据 9.4.1 通过Session来进行批量操作 9.4.2 通过StatelessSession来进行批量操作 9.4.3...
3. **ID生成机制的选择**:不同数据库提供的ID生成策略各异,例如序列、触发器、GUID等,选择适合当前数据库的最佳策略。 4. **适当冗余数据**:虽然过度追求数据库第三范式可能导致大量连接查询,适当的冗余可以...
MySQL5引入了许多新特性,如存储过程、触发器、分区表、外键约束等,增强了其功能性和稳定性。在SpringMVC和Spring应用中,通常使用JDBC或者ORM框架(如Hibernate)来与MySQL进行数据交互。 综合以上,这个项目利用...