jpa oracle id 触发器,触发器与JPA事件

我已经在DB和JPA听众中使用了两种触发器,我已经在JPA监听器上定居了,因为:

>在JPA代码中与数据库通信的唯一代码,所以我不必担心时间戳字段过期. (如果将来会发生这种变化,我可以添加触发器并更改我的映射超级消息)

> JPA听众在我的数据库中没有必要去创建大量触发器的意义上并不那么复杂,所以我不太需要维护.由于我正在积极地开发和更改数据库结构,因为我非常乐意,不必随便更新触发器,因为我快速地重复开发.

>我完全控制数据库,并为db创建一个规则,每个表都将有一个整型pkey和整数版本,并且时间戳表将有insert_ts和update_ts列,这些是我的db中的通用规则设计让生活很简单,我有这两个映射的超级版本,使我所有的enitites简单的代码,因为我从他们扩展.

@MappedSuperclass

public abstract class PersistableObject {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

@Column(name="pkey")

private Integer pkey;

@Version

@Column(name="version")

private Integer version;

public Integer getPkey() {

return this.pkey;

}

public Integer getVersion() {

return this.version;

}

@Override

public String toString() {

return "Presistable Object: pkey=" + this.pkey + " Object: " + this.getClass().getName();

}

}

@MappedSuperclass

public class TimeStampedPersistableObject extends PersistableObject {

@Column(name = "insert_ts")

@Temporal(TemporalType.TIMESTAMP)

private Date insertTimestamp;

@Column(name = "update_ts")

@Temporal(TemporalType.TIMESTAMP)

private Date updateTimestamp;

@SuppressWarnings("unused")

@PrePersist

private void onInsert() {

this.insertTimestamp = new Date();

this.updateTimestamp = this.insertTimestamp;

}

@SuppressWarnings("unused")

@PreUpdate

private void onUpdate() {

this.updateTimestamp = new Date();

}

public Date getInsertTimestamp() {

return this.insertTimestamp;

}

public Date getUpdateTimestamp() {

return this.updateTimestamp;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值