zoukankan      html  css  js  c++  java
  • JPA 解析

    看图想想相关的架构

    1.查询表达式中的接口层次结构

    2.CriteriaQuery 封装了传统查询的子句

    3.Metamodel API 中的持久化类型的接口的层次结构

    4. Metamodel API 中的持久化属性的接口的层次结构

    5.元模型接口是持久化单元中的类型的容器

    这个接口允许通过元模型元素的对应持久化实体类访问元模型元素。例如,要获得对 Person持久化实体的持久化元数据的引用,可以编写:

    EntityManagerFactory emf = ...;
    Metamodel metamodel = emf.getMetamodel();
    EntityType< Person> pClass = metamodel.entity(Person.class);

    这是一个用类的名称通过 ClassLoader 获得 Class 的类比:

    ClassLoader classloader =  Thread.currentThread().getContextClassLoader();
    Class< ?> clazz = classloader.loadClass("domain.Person");

    JPA 的 Metamodel API 接口比 Java Reflection API 更加专业化。需要更细微的差别来表达关于持久化的丰富元信息。

    例如,Java Reflection API 将所有 Java 类型表示为 java.lang.Class。即没有通过独立的定义对概念进行区分,

    比如类、抽象类和接口。当然,您可以询问 Class它是一个接口还是一个抽象类,但这与通过两个独立的定义表示接口和抽象类的差别不同。

    Metamodel API 将强类型引入到持久化实体中。例如,持久化实体在语义上区分为 MappedSuperClassEntity和 Embeddable

    在 JPA 2.0 之前,这种语义区分是通过持久化类定义中的对应类级别注释来表示的。JPA Metamodel 在 javax.persistence.metamodel

    包中描述了 3 个独立的接口(MappedSuperclassTypeEntityType和 EmbeddableType),以更加鲜明的对比它们的语义特征。

    类似地,可以通过接口(比如 SingularAttributeCollectionAttribute和 MapAttribute)在类型定义级别上区分持久化属性。

  • 相关阅读:
    serial number
    python getopt
    python readline,seek
    linux scp
    jenkinsapi
    windows kill process
    python time
    python configparse
    解决某些.net不方便解决的问题,解决方法就是 DHTML
    (转)windows XP 系统服务“关闭”详细列表,释放N多内存,128也够用了!
  • 原文地址:https://www.cnblogs.com/yuyutianxia/p/7219232.html
Copyright © 2011-2022 走看看