的持久性表現我有兩個類:JPA:如何提高一對多關係
@Entity
@Table(name="folder")
public class Folder{
@Id
public String reference;
@OneToMany(cascade = {CascadeType.ALL}, orphanRemoval = true)
public List<Client> clients= new ArrayList<>();
public Date createDate;
}
和第二類:
@Entity
@Table(name = "client")
public class Client implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public int id;
public String name;
}
在我的數據庫
我創建了一個intermadiate表
create table folder_clients (folder_ref varchar(20) not null, clients_id int not null)
alter table folder_clients add constraint UK_clientid unique (clients_id)
alter table folder_clients add constraint FK_idClient foreign key (clients_id) references client
alter table folder_clients add constraint FK_refFolder foreign key (folder_ref) references folder
現在我有一個服務,堅持一個文件夾,所以自動它堅持所有相關的客戶,這是做throught文件夾存儲庫:
folder.getClients().add(client);
folderRepository.save(folder);
一切都很好,工作,但是當我執行SQL事件探查我發現它執行許多語句,從而影響性能。
有沒有更好的方法來改進我的代碼,以減少由hibernate執行的語句的數量並提高性能?
謝謝
想解釋這條線是如何工作的'名單客戶=新ArrayList <>();'如果'Client'不是實際的類? –
XtremeBaumer
對不起,它是一個錯誤,我編輯,第二類是客戶端 – METTAIBI
以及你必須插入/更新連接到該文件夾的每個客戶端。如果它是一個插入,你將不能減少語句的數量。爲了更新它取決於你更新什麼以及你如何確定誰更新。我認爲你錯過了一些sql理解什麼是可能的,什麼不可能 – XtremeBaumer