# [Hibernate] 使用上需注意(待整理) Hibernate 雖能透過物件操作資料庫,讓開發更加便利,但有些使用上會影響效能,以致需要注意的地方 ## 一、FetchType 在透過@OneToMany、@ManyToOne、@ManyToMany、@OneToOne 以上四種 Annotation 來建立關聯時,可以透過 FetchType 來定義如何載入關聯的資料表 ```=java! @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinTable( name = "PRODUCT", joinColumns = @JoinColumn(name = "ID", referencedColumnName = "NO"), inverseJoinColumns = @JoinColumn(name = "PRODUCT_ID", referencedColumnName = "PRODUCT_ID")) private Set<Product> Products = new HashSet<>(); ``` 但若 @ManyToOne、@OneToOne 無指定 FetchType,Hibernate 預設會是 EAGER。 EAGER會主動對關聯的資料表進行額外的查詢,如需要一次載入多筆資資料,將會產生大量額外的查詢(指的是這些關聯join的表),並對資料庫產生負擔。 https://www.tpisoftware.com/tpu/articleDetails/1152
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up