搜尋

搜尋結果

Spring Data 關聯型態 01
科技新知
MacauYeah・2024-07-16

筆者身邊的朋友,首次接觸 ORM 的關聯型態時都會覺得很難,筆者自己也是。但在好好地理順它的設計時,就會覺得其實很簡單。 因為篇輻很長,我們先以Code First的角度,先體驗一下ORM程式讀取的便捷性,以及解決一個常見的序列化問題。 雙向存取 例如一個Parent,有好幾個Child @Entity public class Parent ... Parent Primay Key @OneToManymappedBy=quot;parentquot; List children = new ArrayList; TODO add remove @Entity public class Child ... Child Primay Key @ManyToOne Parent parent; 上述的寫法很簡潔,ORM會為你自動加入join column,處理關聯的載入。在讀取Parent時,它的所有Children就可以直接在Java層面讀取,在讀取Child時,它的Parent也隨時取得。也就是,開發人員只要經SQL準備其中一方的資料,另一方並不需要手動準備,它就可以自動按需載入。 RESTFul API 坑雙向存取 Spring Data在Java層面的雙向存取,已經做到很方便。但經常坑到我們的是Spring Data與RESTFul API的混合應用。當我們嘗試經API回傳我們的Parent Json時,API會很聰明地把關聯的Children也變成Json回傳。但他也會把child中的parent不斷重複變成json,變成無限輪迴。 坊間有兩種不同的解決方案,可以防止無限輪迴。 讓Json可以認得已經序列化的元素。@JsonIdentityInfo 讓Json只可以單向序列化serialization。@JsonManagedReference, @JsonBackReference, @JsonIgnore 筆者兩個方向都試過,但首個方法並不通用,至少它不能算是一般常見的無腦Json結構。它需要伺服器、客戶端都懂這如何經IdentityInfo認得重複出現的元素。 而單向序列化,是筆者現時的通用解。在設計RESTFul READ API時,筆者就會決定到底是Parent自動回傳Child,還是Child自動回傳Parent。決策的考慮因素,主要在於是否可以簡化Client的API調用次數。通常從Parent出發,自動回傳Child,可以節省API調用。但如果是選項性的結果List of Value,就倒過來。有時候,遇著API需要雙向設計,就只好自己設計DTO資料傳輸對象 Data transfer object, DTO。 例如Parent API,就原封不動回傳原本的元素 @Entity public class Parent ... Parent Primay Key @OneToManymappedBy=quot;parentquot; List children = new ArrayList; @Entity public class Child ... Child Primay Key @ManyToOne @JsonIgnore Parent parent; Child API,就反過來引用。 public class ParentDTO ... Parent Other fields except children public class ChildDTO ParentDTO parent; ... Child Other fields 這種DTO,看起來很麻煩。但其實Spring有提供一個簡便的複制DTO功能,它可以把自動複制兩個class中有同一名稱、同一型別的欄位到另一個class上,不需要逐個欄位明文寫出來。 BeanUtils.copychild, childDTO; BeanUtils.copyparent, parentDTO; childDTO.setParentparentDTO 因為child、childDTO中的parent欄位型別不同,BeanUtils.copy會自動忽略,其他欄位就會自動複制。 註 其實古早的網頁系統設計,DTO的概念一直存取。只是現在RESTFul API的流行,很多框架已經提向便捷的Json轉換。若然平時只需Json單向存取,筆者還是省略DTO的建立。

澳門十六浦索菲特酒店 | 葡韻悠然「澳門花園下午茶」
澳城餐飲
小燕品味・2023-08-31

澳門是一座中西文化交匯的城市,文化底蘊深厚,在歷史城區內遊走就象在葡萄牙的街道上,可以感受濃烈的歐洲文化氣息,交織成獨特的文化融合魅力。澳門的葡萄牙式建築喜愛使用別具特色的瓷磚作為飾面,比如在新馬路的巿政署大樓,由大門兩側向花園延伸的牆身飾有傳統葡式瓷磚,以藍白色為主調,與中國的青花瓷十分相似。而澳門也是聯合國教科文組織評定的世界美食之都,中西美食各式其色,縯紛多采,讓愛好美食者大快朵頤,口福滿載。 位於的澳門歷史城區附近的澳門十六浦索菲特酒店, 為了迎接盛夏, 在洋溢巴黎咖啡館浪漫格調的雅聚廊推出了「澳門花園下午茶」,顧名思義就是以葡式花園作為靈感,餐盤舖有裝飾草地,以葡式瓷磚作為點綴,十款精緻美點或化作盆景,或幻化為水池,還有熟悉的澳門瓷磚路牌、小搖椅、蝴蝶及園景,都讓人愛不釋手,賞心悅目,療愈極了! 十款夏日精緻䶢甜美點,色彩繽紛,味道吸引,鹹點包括:橙味醃三文魚酸奶油、玫瑰屑奶油芝士球、鵝肝無花果胡蘿蔔角。甜點則有 苿莉花茶慕斯撻、佛手柑焦糖布丁、抹茶松露巧克力、蜂蜜薰衣草奶凍、香梨桂花慕斯、開心果橙花石榴蛋糕、新鮮水果蘆薈沙拉。自由選配兩款清爽的氣泡茶或香濃咖啡,輕輕鬆鬆享受鬧巿中的片刻悠閒時光。現在隨下午茶更贈送法國思蒂有機白樺樹護膚套裝禮盒,讓肌膚在炎炎夏日都可以放鬆。 推廣期|自2023.08.01起 價格|澳門幣 438 淨價 套 菜單 httpsshorturl.atjqRT5 用餐地點 酒店1層 雅聚廊大堂吧 或 酒店6層 海風餐廳 時間 1500 ndash; 1800 立即預約|853 8861 7213 7210 7236

[議劇論映] 經典俠盜的全新演繹 - 《亞森羅蘋》
娛樂殿堂
君尋・2021-04-14

這次要介紹的是,繼《后翼棄兵》後,又一套被吹捧成Netflix上必追的原創影集《亞森羅蘋》。說起「亞森羅蘋」(Arsegrave;ne Lupin),除推理迷外,一般人可能未必認識這位地位在法國如「福爾摩斯」般家傳互曉的怪盜,但如果把法文「Lupin」翻譯成「雷朋」、「魯邦」等名字不知道你又認識嗎?是的,日本漫畫《魯邦三世》正是日本人認識到亞森羅蘋後的二次創作,就如推理小說家橫溝正史筆下的「金田一耕助」與漫畫角色「金田一一」的關係。 甚至來到羅浮宮取景 主角的身世是故事重要的主軸 《亞森羅蘋》是由法國制作的影集,但卻沒有法國電影予人的既定印象,不但沒有文藝浪漫色彩或節奏緩慢,反而故事劇情局中有局,爽快又鬥智。若只看標題和首集的初段內容,必定會認為這是一套與原著吻合,關於怪盜劫富濟貧的影集。殊不知經過節奏快速、劇情緊湊的盜竊戲碼後,呈現在觀眾眼前的竟是一套復仇劇。與《新世紀福爾摩斯》的設定不同,黑人主角扮演的並非現代版的「亞森羅蘋」,而是一個從小到大都非常喜愛《亞森羅蘋》的小說,並在復仇計劃中重現小說裡的詭計和圈套。以推理小說的術語來形容的話,他只是一名模仿犯,而非真正的「亞森羅蘋」。影集《亞森羅蘋》除故事張力吸引之外,劇情中或多或少都在影射法國社會的一些現況,尤其是黑人和社會階層的問題。在欣賞影視作品的同時,讓身在外地的觀眾能夠注意到社會議題,亦是受到本作受到好評的原因之一。回到故事本身,神機妙算的主角在首季結尾突然犯下低級錯誤,此種按排明顯是為第二季的劇本服務。雖然犯駁,但整體的精彩度依然能在Netflix原創劇集中佔一席位,所以並無影響觀眾對第二季的期待。 男主角由法國影帝Omar Sy飾演 上架不久便立即宣佈製作第2季 關於議劇論映 本欄目將會分享日本及歐美的影集和電影。除最新上映及流行的作品外,亦會推薦值得回味的滄海遺珠。 更多本欄目相關的內容可按:httpsppt.ccf6n5yx