是不是可以在jpa中停止加入?

时间:2012-03-18 14:26:52

标签: hibernate rest jpa

我在实体类中定义了连接。当我进行查询时,连接实体也会返回。

是否可以停止这些连接或它们是否总是会发生?在某些情况下,我想阻止它们发生,以便我不会在我的传输对象中传输不必要的关联实体。或者是剥离转移对象只需要什么的做法?

由于

2 个答案:

答案 0 :(得分:1)

如果您不需要在每个请求上获取所有连接实体,则可以使用延迟提取。 此fetch参数可以选择添加到注释中:@ Basic,@ OneToMany,@ ManyToOne,@ OneToOne和@ManyToMany。

e.g。 @ManyToOne(fetch = FetchType.LAZY)

通过设置FetchType.LAZY,您不会从数据库中检索所有这些连接的字段,直到它们被显式访问。

答案 1 :(得分:1)

更好的方法是创建一个新的Transfer Object并从数据库中获取它。因此,对于Eg:如果您有Person类并且需要转移其某些属性,请考虑执行以下操作

Original Person类看起来像

Class Person {
    private String firstName;
    private String lastName;
    Private Set<User> users
}

创建一个新的类,它将成为您的传输对象,假设您只需要传输人类的一些属性。

Class PersonDTO {
   private String firstName;
   private String lastName;

   public PersonDTO(String firstName, String lastName){
        this.firstName = firstName;
        this.lastName = lastName; 
   }
}

现在您可以将查询编写为

Select new PersonDTO(firstName, lastName) from Person p;

注意:PersonDTO中相应的构造函数非常重要。

希望这会有所帮助。