FetchType

Com o FetchType podemos definir a forma como serão trazidos os relacionamentos, podemos fazer de duas formas:

Associação entre entidades

  • EAGER - Traz todas as entidades que estão relacionadas, ou seja, se a Entidade A possui um relacionamento com a Entidade B, então quando consultar a Entidade A, também será consultado suas referencias na Entidade B.

  • LAZY - Não traz as entidades que estão relacionadas, ou seja, se a Entidade A possui um relacionamento com a Entidade B, então quando consultar a Entidade A só serão retornadas as informações referentes a esta Entidade.

Exemplo de relacionamento LAZY, desse modo o corpo da mensagem é consultado apenas quando houver a necessidade:

@Entity
public class Mensagem {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;
  private String assunto;
  @Temporal(TemporalType.DATE)
  private Date dataEnvio;

  @OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
  private MensagemCorpo mensagemCorpo;
}

Nesse exemplo utilizamos a enum FetchType.LAZY no relacionamento um-para-um para informar que quando consultarmos a entidade Mensagem, não queremos consultar a entidade MensagemCorpo ao mesmo tempo.

results matching ""

    No results matching ""