zoukankan      html  css  js  c++  java
  • JPA实体类监听器@EntityListeners注解使用实例

    被@Prepersist注解的方法 ,完成save之前的操作。
    被@Preupdate注解的方法 ,完成update之前的操作。
    被@PreRemove注解的方法 ,完成remove之前的操作。
    被@Postpersist注解的方法 ,完成save之后的操作。
    被@Postupdate注解的方法 ,完成update之后的操作。
    被@PostRemovet注解的方法 ,完成remove之后的操作。

    自定义实体类监听类:

     
    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("结束保存--"+entity.toString());
        }
     
           @PostUpdate
        public void PostUpdate(Object entity){
            System.out.println("结束更新--"+entity.toString());
        }
    }

    实体类上增加注解:@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("更新。。。");
        }
    }

    执行结果:

     这是Application的配置:

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





  • 相关阅读:
    encodeURIcomponent编码和ASP.NET之间编码转换
    android入门学习一 基本概念
    Acvityity 的生命周期
    Android中ADT插件的安装
    控件必须放在具有 runat=server 的窗体标记内 错误解决解决方法
    AspNetPager 重写UrlRewriting配置示例
    将字符串按指定长度换行的一个C#方法
    [添砖加瓦]:ExtJS+WCF+LINQ打造全功能Grid
    C#中判断字符是否为中文
    Asp.net中防止用户多次登录的方法
  • 原文地址:https://www.cnblogs.com/zouhong/p/14985029.html
Copyright © 2011-2022 走看看