美文网首页
使用Spring JPA Save 方法注意

使用Spring JPA Save 方法注意

作者: 暗夜行者 | 来源:发表于2020-02-03 18:29 被阅读0次

    无论是实现功能较基本的CrudRepository接口 或者 可以提供分页等复杂操作的JpaRepository接口,所调用的save方法都是save+merge的功能。
    需要注意若是一次更新操作,新传入的实体中有字段是null也将覆盖原有的数据,将原有的数据更新为null。
    更新操作切记检查每个值包括Null覆盖的情况。

    拓展学习: ReentrantReadWriteLock 可重入读写锁,分为读锁和写锁,使用举例(摘自官方实现源码):
    private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
    private final Lock read = lock.readLock();
    private final Lock write = lock.writeLock();

    public E getPersistentEntity(TypeInformation<?> type) {

        Assert.notNull(type, "Type must not be null!");
    
        try {
    
            read.lock();
    
            Optional<E> entity = persistentEntities.get(type);
    
            if (entity != null) {
                return entity.orElse(null);
            }
    
        } finally {
            read.unlock();
        }
    
        if (!shouldCreatePersistentEntityFor(type)) {
    
            try {
                write.lock();
                persistentEntities.put(type, NONE);
            } finally {
                write.unlock();
            }
    
            return null;
        }
    
        if (strict) {
            throw new MappingException("Unknown persistent entity " + type);
        }
    
        return addPersistentEntity(type).orElse(null);
    }

    相关文章

      网友评论

          本文标题:使用Spring JPA Save 方法注意

          本文链接:https://www.haomeiwen.com/subject/esnhxhtx.html