java – CDI将服务注入JPA管理的实体
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – CDI将服务注入JPA管理的实体,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1383字,纯文字阅读大概需要2分钟。
内容图文
![java – CDI将服务注入JPA管理的实体](/upload/InfoBanner/zyjiaocheng/786/420a415e0a0f48b7ae868f1c041e6c09.jpg)
我确信这与this question密切相关,但是在这个问题上的操作有一个我不确定甚至对DI有意义的情况.所以这就是我理解的,尝试将JPA实体与CDI Bean混合通常不是一个好主意,因为两者通常都是通过创建代理对象来完成的.这就是我所设想的,但从我所看到的,这是不可能的.
@Entity
public class MyUniqueObject implements Serializable {
@Inject
private transient Logger log;
@Inject
private transient Event<MyUniqueObjectEvent> events;
@Id
private long id;
@NotNull
private String text;
public void setText( final String text ) {
log.debug( "updating text {}", this );
this.text = text;
events.fire( new MyUniqueObjectEvent( this ) ); // consumed by an @Observes method
}
}
做我想要完成的事情的最佳方法是什么?这基本上就像从JPA持久化实体中触发的事件,访问日志对象.代码示例很有用.
解决方法:
我想知道观察实体属性的每个更改是否真的有用,即使它们最终不会被持久化.所以难道你不认为Entity Listeners and Callbacks对你来说不够吗?他们支持CDI自JPA 2.1起并提供大量回调你可以观察到
> @PrePersist
> @PreRemove
> @PostPersist
> @PostRemove
> @PreUpdate
> @PostUpdate
> @PostLoad
所以你会得到
@EntityListeners(class=Audit.class)
@Entity
public class MyUniqueObject implements Serializable {}
public class Audit {
@Inject
private Logger log;
@Inject
private Event<MyUniqueObjectEvent> events;
}
现在,您可以观察实体的生命周期 – 您最好将模型与审计分开,您不必陷入设置器和getter(这令人困惑)以实现日志记录.另请注意,您还可以为您拥有的每个实体定义Default Entity Listeners.
内容总结
以上是互联网集市为您收集整理的java – CDI将服务注入JPA管理的实体全部内容,希望文章能够帮你解决java – CDI将服务注入JPA管理的实体所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。