From b6bcebe21e0b9c9669455d21ab32596427ad22ca Mon Sep 17 00:00:00 2001 From: jianan <1072772483@qq.com> Date: Thu, 11 Aug 2022 17:53:54 +0800 Subject: [PATCH] =?UTF-8?q?perf[module]:=20=E4=BC=98=E5=8C=96IEntity?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=96=B0=E5=A2=9Einsert=20delete=20?= =?UTF-8?q?save?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zfoo/orm/model/cache/EntityCaches.java | 2 +- .../com/zfoo/orm/model/entity/IEntity.java | 38 ++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/orm/src/main/java/com/zfoo/orm/model/cache/EntityCaches.java b/orm/src/main/java/com/zfoo/orm/model/cache/EntityCaches.java index afe785ca..96e5c68d 100644 --- a/orm/src/main/java/com/zfoo/orm/model/cache/EntityCaches.java +++ b/orm/src/main/java/com/zfoo/orm/model/cache/EntityCaches.java @@ -144,7 +144,7 @@ public class EntityCaches, E extends IEntity> impl } if (currentPnode.getThreadId() != Thread.currentThread().getId()) { - logger.error("[{}]被多线程访问了,先后2次访问线程ID分别是[{}] [{}]", entity.getClass().getSimpleName(), + logger.error("[{} id:{}]被多线程访问了,先后2次访问线程id分别是[{}][{}]", entity.getClass().getSimpleName(), entity.id(), currentPnode.getThreadId(), Thread.currentThread().getId()); } diff --git a/orm/src/main/java/com/zfoo/orm/model/entity/IEntity.java b/orm/src/main/java/com/zfoo/orm/model/entity/IEntity.java index 10db4057..0a0c19fe 100644 --- a/orm/src/main/java/com/zfoo/orm/model/entity/IEntity.java +++ b/orm/src/main/java/com/zfoo/orm/model/entity/IEntity.java @@ -13,6 +13,7 @@ package com.zfoo.orm.model.entity; +import com.zfoo.orm.OrmContext; import com.zfoo.protocol.util.StringUtils; /** @@ -53,7 +54,7 @@ public interface IEntity> { * * @return EntityCaches中取出的值在数据库中是否存在 */ - default boolean checkNull() { + default boolean empty() { PK idValue = id(); if (idValue == null) { return true; @@ -65,4 +66,39 @@ public interface IEntity> { return StringUtils.isEmpty((CharSequence) idValue); } } + + /** + * 插入数据库时使用 + */ + default void insert() { + OrmContext.getAccessor().insert(this); + invalidate(); + } + + /** + * 从数据库删除时使用 + */ + default void delete() { + OrmContext.getAccessor().delete(this); + invalidate(); + } + + /** + * 保存到数据库时使用 + */ + default void save() { + OrmContext.getOrmManager().getEntityCaches(this.getClass()).update(queryEntity()); + } + + private void invalidate() { + OrmContext.getOrmManager().getEntityCaches(this.getClass()).invalidate(queryId()); + } + + private E queryEntity() { + return (E) this; + } + + private PK queryId() { + return (PK) id(); + } }