簡體   English   中英

Hibernate:在Spring中保存復雜的數據模型

[英]Hibernate: Saving a complex data model in Spring

我的數據模型有一個實體網絡。 一組相互引用與實體@OneToOne@ManyToOne等。一些這些參考文獻的定義為@NotNull

@Entity
@Table(name="UserDetails")
public class CustomUserDetails implements Serializable {
    @NotNull
    @JoinColumn(name="user_id", referencedColumnName="id")
    @OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
    private User user;
    //.....
}

CustomUserDetailsService處理從數據庫保存和加載CustomUserDetails類的實例,而UserDetailsRepository是擴展CrudRepisitory的接口。

當用戶調用/signup我們要創建CustomUserDetails實例並將其保存到數據庫。 但是在服務器持久CustomUserDetails的新實例CustomUserDetails ,它必須創建User類型的新實例並將其保存到db(定義為@NotNull )。

在Controller的CustomUserDetailsService執行此操作是否有意義? 還是其他地方?

恐怕設計會變得太復雜,並且當數據模型變得更復雜時,不同實體的服務類之間會有很多交叉引用。

遵循相同的樣式,您應該具有一個名為“ UserService”的類,該類為用戶處理CRUD操作。 CustomUserDetailsS​​ervice應該包含一個UserService成員,最好使用@Autowire注釋。

在創建新的自定義用戶詳細信息之前,請調用UserService來創建新用戶(如果需要)。

從原則上講 ,它可以在這里結束, CustomUserDetailsS​​ervice熟悉UserService ,反之亦然。 您已經定義了cascade = CascadeType.ALL ,因此,如果刪除用戶,則還將刪除客戶用戶詳細信息。

只需確保CustomUserDetails的其他關系具有正確定義的級聯即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM