欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

JPA實(shí)體類(lèi)監(jiān)聽(tīng)器@EntityListeners注解的使用

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

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

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

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

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

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

自定義實(shí)體類(lèi)監(jiān)聽(tīng)類(lèi):

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("開(kāi)始保存--"+entity.toString());
	}
	@PreUpdate
	public void PreUpdate(Object entity){
		System.out.println("開(kāi)始更新--"+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í)體類(lèi)上增加注解:

@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()
}

寫(xiě)兩個(gè)測(cè)試保存、更新的方法:

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)聽(tīng)器內(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)注在類(lèi)上,用來(lái)標(biāo)識(shí)父類(lèi);

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

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

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

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

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

2.@EntityListeners(AuditingEntityListener.class)注解

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

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

啟動(dòng)類(lèi)上加@EnableJpaAuditing,不然@CreateDate,@LastModifiedBy不生效

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

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

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

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

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

相關(guān)文章

  • SpringMVC的執(zhí)行過(guò)程淺析

    SpringMVC的執(zhí)行過(guò)程淺析

    這篇文章主要給大家介紹了關(guān)于SpringMVC的執(zhí)行過(guò)程的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用SpringMVC具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Maven的安裝+配置本地倉(cāng)庫(kù)路徑方式

    Maven的安裝+配置本地倉(cāng)庫(kù)路徑方式

    這篇文章主要介紹了Maven的安裝+配置本地倉(cāng)庫(kù)路徑方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • 解決 IDEA 創(chuàng)建 Gradle 項(xiàng)目沒(méi)有src目錄問(wèn)題

    解決 IDEA 創(chuàng)建 Gradle 項(xiàng)目沒(méi)有src目錄問(wèn)題

    這篇文章主要介紹了解決 IDEA 創(chuàng)建 Gradle 項(xiàng)目沒(méi)有src目錄問(wèn)題,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • Java設(shè)計(jì)模式之備忘錄模式使用詳解

    Java設(shè)計(jì)模式之備忘錄模式使用詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式中備忘錄模式的使用,備忘錄設(shè)計(jì)模式也叫作快照模式,主要用于實(shí)現(xiàn)防丟失、撤銷(xiāo)、恢復(fù)等功能,本文將通過(guò)示例為大家講解備忘錄模式的定義與使用,需要的同學(xué)可以參考一下
    2024-02-02
  • Java內(nèi)存溢出和內(nèi)存泄露

    Java內(nèi)存溢出和內(nèi)存泄露

    這篇文章主要介紹了Java內(nèi)存溢出和內(nèi)存泄露的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • MyEclipse開(kāi)發(fā)一個(gè)webservice接口

    MyEclipse開(kāi)發(fā)一個(gè)webservice接口

    這篇文章主要為大家詳細(xì)介紹了MyEclipse開(kāi)發(fā)一個(gè)webservice接口,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • java對(duì)象轉(zhuǎn)型實(shí)例分析

    java對(duì)象轉(zhuǎn)型實(shí)例分析

    這篇文章主要介紹了java對(duì)象轉(zhuǎn)型的概念及用法,并以實(shí)例形式進(jìn)行了較為詳細(xì)的介紹,需要的朋友可以參考下
    2014-10-10
  • Springboot實(shí)例講解實(shí)現(xiàn)專(zhuān)業(yè)材料認(rèn)證管理系統(tǒng)流程

    Springboot實(shí)例講解實(shí)現(xiàn)專(zhuān)業(yè)材料認(rèn)證管理系統(tǒng)流程

    這是一個(gè)基于java的畢業(yè)設(shè)計(jì)項(xiàng)目,畢設(shè)課題為springboot框架的知識(shí)產(chǎn)權(quán)服務(wù)平臺(tái)系統(tǒng),是一個(gè)采用b/s結(jié)構(gòu)的javaweb項(xiàng)目,需要的朋友可以參考下
    2022-06-06
  • javaweb實(shí)現(xiàn)文件上傳功能

    javaweb實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了javaweb實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Java?Mybatis框架由淺入深全解析上篇

    Java?Mybatis框架由淺入深全解析上篇

    MyBatis是一個(gè)優(yōu)秀的持久層框架,它對(duì)jdbc的操作數(shù)據(jù)庫(kù)的過(guò)程進(jìn)行封裝,使開(kāi)發(fā)者只需要關(guān)注SQL本身,而不需要花費(fèi)精力去處理例如注冊(cè)驅(qū)動(dòng)、創(chuàng)建connection、創(chuàng)建statement、手動(dòng)設(shè)置參數(shù)、結(jié)果集檢索等jdbc繁雜的過(guò)程代碼本文將為大家初步的介紹一下MyBatis的使用
    2022-07-07

最新評(píng)論