Relation, cascade et performance
Bonjour
je débute en JPA. J'utilise spring-jpa avec hibernate.
J'ai un objet lodger avec plusieurs relations @OneToOne, @OneToMany. Actuellement, tout est en Cascade All.
Cela fonctionne, mais énormément de requête sont faite et les performance ne sont pas au top.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
@OneToOne
private LodgerStatus lodgerStatus;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "lodger")
private List<IdentityCard> identityCardList;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private OldAddress oldAddress;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Vehicle vehicle;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Phone phone;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "lodger") //relation bidirectionnel
private List<Appointment> appointmentList;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "lodger") //relation bidirectionnel
private List<Reference> referenceList;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "lodger") //relation bidirectionnel
private List<Rent> rentList;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "lodger") //relation bidirectionnel
private List<AccountOperation> accountOperationList;
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.LAZY)
private List<MedicalContact> medicalContactList;
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.LAZY, mappedBy = "lodger")
private List<LawContact> lawContactList;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "lodger") //relation bidirectionnel
private List<RoomPayment> roomPaymentList; |
Je me demande si je devrais pas juste mettre CascadeType.PERSIST, CascadeType.MERGE (pour gérer la sauvegarde et update) aux relation ou bien
tout simplement gérer les opérations sur les enfants de façon manuel (si c'est possible).
Dans ce cas comment je pourrais le faire?
merci