最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于JPA實(shí)體類監(jiān)聽器@EntityListeners注解的使用實(shí)例

 更新時間:2021年08月02日 15:23:22   作者:c&0xff00  
這篇文章主要介紹了JPA實(shí)體類監(jiān)聽器@EntityListeners注解的使用實(shí)例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

JPA實(shí)體類監(jiān)聽器@EntityListeners注解的使用

被@Prepersist注解的方法 ,完成save之前的操作。

被@Preupdate注解的方法 ,完成update之前的操作。

被@PreRemove注解的方法 ,完成remove之前的操作。

被@Postpersist注解的方法 ,完成save之后的操作。

被@Postupdate注解的方法 ,完成update之后的操作。

被@PostRemovet注解的方法 ,完成remove之后的操作。

自定義實(shí)體類監(jiān)聽類:

import org.springframework.stereotype.Component;
import javax.persistence.PostPersist;
import javax.persistence.PostUpdate;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
public class TestEntityListeners {
	@PrePersist
	public void PrePersist(Object entity){
		System.out.println("開始保存--"+entity.toString());
	}
	@PreUpdate
	public void PreUpdate(Object entity){
		System.out.println("開始更新--"+entity.toString());
	}
 
	@PostPersist
	public void PostPersist(Object entity){
		System.out.println("結(jié)束保存--"+entity.toString());
	}
 
       @PostUpdate
	public void PostUpdate(Object entity){
		System.out.println("結(jié)束更新--"+entity.toString());
	}
}

實(shí)體類上增加注解:

@EntityListeners(value = {TestEntityListeners.class})
@Entity
@Table(name = "product")
@EntityListeners(value = {TestEntityListeners.class})
public class Product {
	private int id;
	private String productId;
	private String productName;
    //getter setter toString()
}

寫兩個測試保存、更新的方法:

import com.goods.evaluate.entity.Product;
import com.goods.evaluate.service.TestService1;
import com.goods.evaluate.repository.ProductRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; 
import java.util.Optional; 
@Service
public class TestService implements TestService1 { 
	@Autowired
	private ProductRepository productRepository; 
	@Transactional
	public void testSave(){
		Optional<Product> product = productRepository.findById(10);
		productRepository.save(product.orElse(null));
		System.out.println("保存。。。");
	} 
	@Transactional
	public void testUpdate(){
		productRepository.updateProduct("test10");
		System.out.println("更新。。。");
	}
}

執(zhí)行結(jié)果:

未執(zhí)行監(jiān)聽器內(nèi)容? 暫不清楚是什么原因

這是Application的配置:

@SpringBootApplication
@EnableSpringConfigured
@EnableJpaAuditing
@EnableAspectJAutoProxy(proxyTargetClass=true)
public class EvaluateApplication { 
	public static void main(String[] args) {
		SpringApplication.run(EvaluateApplication.class, args);
	} 
}

@MappedSupperclass、@EntityListeners注解注意事項(xiàng)

1. @MappedSupperclass注解

(1) 該注解標(biāo)注在類上,用來標(biāo)識父類;

(2) 該注解標(biāo)識的類不能映射到數(shù)據(jù)庫,被標(biāo)識的類的屬性必須通過子類來映射;

(3) 該注解標(biāo)識了類之后,不能再有@Entity和@Table注解標(biāo)識該類

(4) 標(biāo)識有該注解的類,通常屬性上用以下注解@Id @GeneratedVale(strategy=GenerationType.IDENTITY) 、

@CreateDate 、 @CreateBy、@LastModifiedBy、@LastModifiedDate等注解用在父類上,子類基礎(chǔ)該父類即可,

并在子類標(biāo)注@Table和@Entity

2.@EntityListeners(AuditingEntityListener.class)注解

(1) 該注解用于監(jiān)聽實(shí)體類,在save、update之后的狀態(tài)

(2) 使用了@EntityListeners(AuditingEntityListener.class)之后,記得在Application

啟動類上加@EnableJpaAuditing,不然@CreateDate,@LastModifiedBy不生效

3.啟用@EnableJpaAuditing,配置AuditorAware實(shí)現(xiàn)類

(1)只有使用了@EnableJpaAuditing注解,@CreateDate @LastModifiedBy等注解才會生效;

(2) 只有實(shí)現(xiàn)了AuditorAware接口,才會指定@CreateBy用戶名信息。

//AuditorAware 實(shí)現(xiàn)類,指定當(dāng)前操作用戶信息
@Configuration
public class UserAuditorConfig implements AuditorAware<String> {
    @Override
    public Optional<String> getCurrentAuditor() {
        return Optional.of(SpringSecurityHolder.currentUserName());
    }
}

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java后端服務(wù)間歇性響應(yīng)慢的問題排查與解決

    Java后端服務(wù)間歇性響應(yīng)慢的問題排查與解決

    之前在公司內(nèi)其它團(tuán)隊(duì)找到幫忙排查的一個后端服務(wù)連接超時問題,問題的表現(xiàn)是服務(wù)部署到線上后出現(xiàn)間歇性請求響應(yīng)非常慢(大于10s),但是后端業(yè)務(wù)分析業(yè)務(wù)日志時卻沒有發(fā)現(xiàn)慢請求,所以本文給大家介紹了Java后端服務(wù)間歇性響應(yīng)慢的問題排查與解決,需要的朋友可以參考下
    2025-03-03
  • 基于SpringBoot實(shí)現(xiàn)驗(yàn)證碼功能的代碼及思路

    基于SpringBoot實(shí)現(xiàn)驗(yàn)證碼功能的代碼及思路

    SpringBoot技術(shù)是目前市面上從事JavaEE企業(yè)級開發(fā)過程中使用量最大的技術(shù),下面這篇文章主要給大家介紹了如何基于SpringBoot實(shí)現(xiàn)驗(yàn)證碼功能的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • 使用Springboot根據(jù)配置文件動態(tài)注入接口實(shí)現(xiàn)類

    使用Springboot根據(jù)配置文件動態(tài)注入接口實(shí)現(xiàn)類

    這篇文章主要介紹了使用Springboot根據(jù)配置文件動態(tài)注入接口實(shí)現(xiàn)類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java實(shí)現(xiàn)酒店管理系統(tǒng)

    java實(shí)現(xiàn)酒店管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)酒店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • java注解實(shí)現(xiàn)websocket服務(wù)的兩種方式

    java注解實(shí)現(xiàn)websocket服務(wù)的兩種方式

    Java WebSocket是一種基于TCP協(xié)議的雙向全雙工消息傳輸技術(shù),它允許服務(wù)器和客戶端之間實(shí)時通信,具有低延遲和高效率的特點(diǎn),下面這篇文章主要給大家介紹了關(guān)于java注解實(shí)現(xiàn)websocket服務(wù)的兩種方式,需要的朋友可以參考下
    2024-08-08
  • JDK反序列化時修改類的全限定性名解析

    JDK反序列化時修改類的全限定性名解析

    這篇文章主要介紹了JDK反序列化時修改類的全限定性名解析,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java中的轉(zhuǎn)換流InputStreamReader解讀

    Java中的轉(zhuǎn)換流InputStreamReader解讀

    InputStreamReader是Java.io包中的一個類,用于將字節(jié)輸入流轉(zhuǎn)換為字符輸入流,它繼承自java.io.Reader類,提供了兩種構(gòu)造方法,可以使用默認(rèn)或指定字符集創(chuàng)建實(shí)例,常用方法包括讀取字符、判斷是否準(zhǔn)備好讀取數(shù)據(jù)和關(guān)閉流
    2024-09-09
  • Java計(jì)算兩個時間相差的秒數(shù)怎么算

    Java計(jì)算兩個時間相差的秒數(shù)怎么算

    這篇文章主要介紹了Java計(jì)算兩個時間相差的秒數(shù),通過實(shí)例代碼補(bǔ)充介紹了Java 獲取兩個時間的時間差(時、分、秒)問題,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • 基于@JsonProperty的使用說明

    基于@JsonProperty的使用說明

    這篇文章主要介紹了基于@JsonProperty的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • java + dom4j.jar提取xml文檔內(nèi)容

    java + dom4j.jar提取xml文檔內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了java + dom4j.jar提取xml文檔內(nèi)容,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評論

舒城县| 平谷区| 安丘市| 广灵县| 凉城县| 大理市| 云林县| 从江县| 邳州市| 枞阳县| 阳山县| 武山县| 文成县| 博罗县| 孟津县| 江都市| 河津市| 岳普湖县| 威海市| 札达县| 乐山市| 潢川县| 柳江县| 株洲市| 金阳县| 莱西市| 肃北| 泽州县| 子长县| 渝北区| 调兵山市| 黔西| 达州市| 北辰区| 临清市| 伊通| 铜梁县| 德令哈市| 温州市| 登封市| 大埔县|