Hibernate表管理最佳实践

时间:2018-04-07 19:02:43

标签: java hibernate database-design orm

我正在设计一个数据库,我想存储许多表(大约50个)。对于每个表,我创建了类(例如@Entity类A)。现在,我为每个表创建了管理器类(例如,类AManager)。该类实现对数据库的访问。我试图在一个单独的泛型类中选择常用操作:

public abstract class EntityHelper<T> implements EntityManager<T> {

    public String key = "";    
    public String value = "";
    public String table = "";
    public Class<T> TClass;

    protected final JPAApi jpaApi;
    protected final PostExecutionContext ec;

    public Class<T> getType() {
      return TClass;
    }

    @Override
    public CompletionStage<Stream<T>> list() {
        return supplyAsync(() -> wrap(em -> select(em)), ec);
    }

    public Stream<T> select(EntityManager em){
        TypedQuery<T> query = em.createQuery("SELECT t FROM "+table+" t", getType());
        return query.getResultList().stream();
    }

   public <T> T wrap(Function<EntityManager, T> function) {
        return jpaApi.withTransaction(function);
    }



}


public class DeviceManager extends EntityHelper<Device> {


    @Inject
    public DeviceManager(JPAApi api, PostExecutionContext ec) {
        super(api, ec);
        super.table = Device.TABLE_NAME;
        super.TClass = Device.class;
    }
}

但我仍然有样板代码。 什么是最小化样板的最佳实践?

P.S。抱歉我的英文。

0 个答案:

没有答案