/** * Copyright 2014 Duan Bingnan * * 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 org.pinus4j.entity; import java.util.List; import org.pinus4j.cluster.beans.IShardingKey; import org.pinus4j.entity.meta.DBTable; import org.pinus4j.entity.meta.DBTablePK; import org.pinus4j.entity.meta.EntityPK; import org.pinus4j.entity.meta.PKName; import org.pinus4j.entity.meta.PKValue; /** * Entity管理接口 * * @author shanwei Jul 22, 2015 1:38:37 PM */ public interface IEntityMetaManager { /** * 判断缓存是否开启 * * @param clazz * @return */ public boolean isCache(Class<?> clazz); /** * 获取表名不带下标 * * @param clazz * @return */ public String getTableName(Class<?> clazz); /** * 获取表名. * * @param clazz * @param tableIndex * @return */ public String getTableName(Class<?> clazz, int tableIndex); /** * 获取表名 * * @param entity * @param tableIndex 表下标 * @return */ public String getTableName(Object entity, int tableIndex); /** * 获取分片表数 * * @param clazz * @return */ public int getTableNum(Class<?> clazz); /** * 获取集群名 * * @param clazz * @return */ public String getClusterName(Class<?> clazz); /** * 获取分片值 * * @param entity * @return */ public IShardingKey<?> getShardingKey(Object entity); /** * 判断是否是分片 * * @param clazz * @return */ public boolean isShardingEntity(Class<?> clazz); /** * 获取联合主键的主键名. * * @param clazz * @return */ public PKName[] getPkName(Class<?> clazz); /** * 获取主键信息,包括联合主键 * * @param obj * @return */ public EntityPK getEntityPK(Object obj); /** * 获取非联合主键的主键名 * * @param clazz * @return */ public PKName getNotUnionPkName(Class<?> clazz); /** * 获取非联合主键的主键值 * * @param obj * @return */ public PKValue getNotUnionPkValue(Object obj); /** * 判断实体是否是联合主键 * * @param clazz * @return */ public boolean isUnionKey(Class<?> clazz); /** * 获取实体的非联合主键信息,如果没有则返回null; * * @return */ public DBTablePK getNotUnionPrimaryKey(Class<?> clazz); /** * 清理已经加载的@Table对象,并重新扫描 * * @param scanPackage */ public void reloadEntity(String scanPackage); /** * 扫描classpath中的@Table对象,并加载到内存 * * @param scanPackage */ public void loadEntity(String scanPackage); public List<DBTable> getTableMetaList(); public DBTable getTableMeta(Class<?> entityClass); public DBTable getTableMeta(String tableName); }