Java 默认情况下,我是否可以使用EAGER fetchType生成JPA实体?

Java 默认情况下,我是否可以使用EAGER fetchType生成JPA实体?,java,performance,hibernate,jpa,eager-loading,Java,Performance,Hibernate,Jpa,Eager Loading,Im使用JPA persistence.xml并使用Hibernate代码生成器生成实体。My persistence.xml如下所示: <persistence-unit name="my_schema"> ... classes ... <properties> <property name="hibernate.connection.url" value="jdbc:mysql://10.12.200.101:3306/my

Im使用JPA persistence.xml并使用Hibernate代码生成器生成实体。My persistence.xml如下所示:

<persistence-unit name="my_schema">
    ... classes ...

    <properties>

        <property name="hibernate.connection.url" value="jdbc:mysql://10.12.200.101:3306/my_schema"></property>
        <property name="hibernate.default_catalog" value="my_schema" />

        <property name="hibernate.connection.username" value="my_user"></property>
        <property name="hibernate.connection.password" value="my_pass"></property>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"></property>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"></property>
        <property name="hibernate.connection.nombre" value="my_schema" />

    </properties>
</persistence-unit>
默认情况下,是否有方法使用FetchType.EAGER生成此实体

  • 默认情况下,所有
    @ManytoOne
    @OneToOne
    关系都是
    渴望的

  • @OneToMany
    关联是
    懒惰的
    ,原因很好

  • 假设您有根实体:

    • 国家
      ,具有一对多关联状态
    • 每个州都有一个一对多的关联城市
    • 每个
      城市
      都有一对多的关联街道
    • 每个
      街道
      都有一对多的关联
      门牌号
  • 如果您有一个默认选项,即急切地获取所有这些一对多关联,则可能是选择一个
    国家

    这是一个主要的性能问题,您应该规划您的性能

  • 如果您急切地获取所有一对多关联,并且一个父实体(
    parent
    )有两个不相关的一对多关联(子实体和作业),那么获取父实体将最终得到所有一对多关联的笛卡尔积
  • 因此,总而言之:

    • 仔细规划您的获取策略
    • 减少对默认“即时抓取”的依赖
    • 在所有JPQL或Criteria API查询中显式使用fetch联接,以提取特定作业所需的适当数量的信息

    是的,我的问题确实是一对夫妻的关系。我有一个非常小的数据库,然后我认为效率不会是一个问题。我不喜欢每次我重新生成实体时都必须手动修改所有的一对多关系。但是如果你有一个小数据库,你就没有那么多的一对多关联。您可以简单地为它们设置fetch-EAGER属性。
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "entity_name")