Som v situácii, keď potrebujem zmeniť moje jednosmerné vzťahy JPA tak, aby sa stali obojsmernými (AN Account
subjekt má zoznam Advertisements
) tak, aby a Advertisement
Môžem určiť, či patrí alebo nie Account
(z bezpečnostných dôvodov).
Zdá sa, že prierezová záležitosť uložila rozhodnutie o mojom návrhu a nie som si istý, či je to dobré.
Tiež neviem, čo nevýhody použitia obojsmerných vzťahov sú.
Môže niekto, prosím, komentovať a poradiť?
odpovede:
1 pre odpoveď č. 1Pokúsim sa odpovedať na otázku príkladom:
@Entity
public clas Account {
@OneToMany(mappedBy = "account") // is mappedBy really necessary ?
private List<Advertisements> advertisements;
}
Jednosmerné nevýhody:
Nedostatok mappedBy
atribút vedie k jednosmernému jednosmernémua vytvára dodatočnú spojovaciu tabuľku pozostávajúcu z cudzích kľúčov. Toto je často považované za úskalie JPA a má negatívny vplyv na výkon na úrovni databázy (máte tri tabuľky namiesto dvoch).
@Entity
public clas Advertisements {
@ManyToOne
@JoinColumn(name="ACCOUNT_ID")
private Account account; // is Account really necessary ?
}
Obojsmerné nevýhody:
Môžete navigovať z Advertisements
na Account
tak z hľadiska JPA máte prístup k jednosmernej asociácii "SELECT adv.account FROM Advertisements adv"
, Predpoklad, že nechcete, aby sa dalo povedať, že to môže mať negatívny vplyv na bezpečnosť na úrovni SPZ.