diff --git a/orm/src/main/java/com/zfoo/orm/manager/OrmManager.java b/orm/src/main/java/com/zfoo/orm/manager/OrmManager.java index a9187317..0e555e94 100644 --- a/orm/src/main/java/com/zfoo/orm/manager/OrmManager.java +++ b/orm/src/main/java/com/zfoo/orm/manager/OrmManager.java @@ -305,9 +305,10 @@ public class OrmManager implements IOrmManager { var cacheStrategies = ormConfig.getCaches(); var persisterStrategies = ormConfig.getPersisters(); - var cache = clazz.getAnnotation(EntityCache.class); - var cacheStrategyOptional = cacheStrategies.stream().filter(it -> it.getStrategy().equals(cache.cacheStrategy())).findFirst(); - AssertionUtils.isTrue(cacheStrategyOptional.isPresent(), "实体类Entity[{}]没有找到缓存策略[{}]", clazz.getSimpleName(), cache.cacheStrategy()); + var entityCache = clazz.getAnnotation(EntityCache.class); + var cache = entityCache.cache(); + var cacheStrategyOptional = cacheStrategies.stream().filter(it -> it.getStrategy().equals(cache.value())).findFirst(); + AssertionUtils.isTrue(cacheStrategyOptional.isPresent(), "实体类Entity[{}]没有找到缓存策略[{}]", clazz.getSimpleName(), cache.value()); var cacheStrategy = cacheStrategyOptional.get(); var cacheSize = cacheStrategy.getSize(); @@ -316,9 +317,9 @@ public class OrmManager implements IOrmManager { var idField = ReflectionUtils.getFieldsByAnnoInPOJOClass(clazz, Id.class)[0]; ReflectionUtils.makeAccessible(idField); - var persister = cache.persister(); + var persister = entityCache.persister(); var persisterStrategyOptional = persisterStrategies.stream().filter(it -> it.getStrategy().equals(persister.value())).findFirst(); - AssertionUtils.isTrue(persisterStrategyOptional.isPresent(), "实体类Entity[{}]没有找到持久化策略[{}]", clazz.getSimpleName(), persister); + AssertionUtils.isTrue(persisterStrategyOptional.isPresent(), "实体类Entity[{}]没有找到持久化策略[{}]", clazz.getSimpleName(), persister.value()); var persisterStrategy = persisterStrategyOptional.get(); var indexDefMap = new HashMap(); diff --git a/orm/src/main/java/com/zfoo/orm/model/anno/Cache.java b/orm/src/main/java/com/zfoo/orm/model/anno/Cache.java new file mode 100644 index 00000000..c58d559f --- /dev/null +++ b/orm/src/main/java/com/zfoo/orm/model/anno/Cache.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2020 The zfoo Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and limitations under the License. + */ + +package com.zfoo.orm.model.anno; + +import java.lang.annotation.*; + +/** + * @author godotg + * @version 3.0 + */ +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE}) +public @interface Cache { + + String value() default "default"; + +} diff --git a/orm/src/main/java/com/zfoo/orm/model/anno/EntityCache.java b/orm/src/main/java/com/zfoo/orm/model/anno/EntityCache.java index d4c1209c..ae106c5a 100644 --- a/orm/src/main/java/com/zfoo/orm/model/anno/EntityCache.java +++ b/orm/src/main/java/com/zfoo/orm/model/anno/EntityCache.java @@ -24,7 +24,7 @@ import java.lang.annotation.*; @Target({ElementType.TYPE}) public @interface EntityCache { - String cacheStrategy(); + Cache cache() default @Cache; Persister persister() default @Persister; diff --git a/orm/src/test/java/com/zfoo/orm/entity/MailEnt.java b/orm/src/test/java/com/zfoo/orm/entity/MailEnt.java index a3032891..3343de29 100644 --- a/orm/src/test/java/com/zfoo/orm/entity/MailEnt.java +++ b/orm/src/test/java/com/zfoo/orm/entity/MailEnt.java @@ -24,7 +24,7 @@ import com.zfoo.orm.model.entity.IEntity; * @author godotg * @version 3.0 */ -@EntityCache(cacheStrategy = "thousand", persister = @Persister("time30s")) +@EntityCache(persister = @Persister("time30s")) public class MailEnt implements IEntity { @Id diff --git a/orm/src/test/java/com/zfoo/orm/entity/UserEntity.java b/orm/src/test/java/com/zfoo/orm/entity/UserEntity.java index d454ec5e..c00e2017 100644 --- a/orm/src/test/java/com/zfoo/orm/entity/UserEntity.java +++ b/orm/src/test/java/com/zfoo/orm/entity/UserEntity.java @@ -21,9 +21,9 @@ import java.util.List; /** * @author godotg - * @version 3.0 + * @version 3.0@EntityCache(persister = @Persister("time30s")) */ -@EntityCache(cacheStrategy = "thousand", persister = @Persister("time30s")) +@EntityCache public class UserEntity implements IEntity { @Id diff --git a/orm/src/test/java/com/zfoo/orm/entity/bag/MapEntity.java b/orm/src/test/java/com/zfoo/orm/entity/bag/MapEntity.java index c08f4fe2..17cdd5d1 100644 --- a/orm/src/test/java/com/zfoo/orm/entity/bag/MapEntity.java +++ b/orm/src/test/java/com/zfoo/orm/entity/bag/MapEntity.java @@ -22,7 +22,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Objects; -@EntityCache(cacheStrategy = "thousand", persister = @Persister("time30s")) +@EntityCache(persister = @Persister("time30s")) public class MapEntity implements IEntity { @Id private long id; diff --git a/orm/src/test/resources/application.xml b/orm/src/test/resources/application.xml index b0772ed0..d7e3f988 100644 --- a/orm/src/test/resources/application.xml +++ b/orm/src/test/resources/application.xml @@ -30,11 +30,12 @@ + - +