搜尋

搜尋結果

Spring Data 關聯型態 02
科技新知
MacauYeah・2024-08-09

Presist and Casecade 前次的文章,講了一些Spring Data最基本的關聯概念,但當要正式儲存或刪除,就有些考慮完整性問題。平常我們在處理資料庫的關聯表格時,也需要面Foreign Key的正確性問題。同樣地,Spring Data也有這方面的考量,但它有提份一個很方便的CascadeType選項,可以簡化一些流程。 假設你只能存取Parent Repo,那你需要在Parent中,加入CascadeType.All。當repo.saveparent時,它就會順多把所有child的也一併進行Save,你也不需要有Child Repo的存在。 @OneToManymappedBy=quot;parentquot;, cascade = CascadeType.All List children = new ArrayList; 但在複雜的狀況下,例如你不想在更新parent的情況下,不小心弄到child,特別是經過public web下的API操作,你對web client的資料正確性有存疑,就不要使用CascadeType了。這也是筆者認為在大多數情況下,我們都會把Parent和Child的CRUD分開操作,然後根據需要使用各自的repo save。 如果你一定要用CascadeType.ALL CascadeType.REMOVE,就要再留意刪除的問題。為什麼?因為刪除 parent,其實指的是某個parent不再存在,但不代表child也要一起刪除,child的parent連結可以變為null,也有重新連結其他parent的可能。 如果大家確定需要共同刪除,就可以用CascadeType.ALL 或 CascadeType.REMOVE。 還有一個新的選擇,orphanRemoval = true,也有類似效果。 @OneToManymappedBy=quot;parentquot;, cascade = CascadeType.REMOVE List children = new ArrayList; or @OneToManymappedBy=quot;parentquot;, orphanRemoval = true List children = new ArrayList; or @OneToManymappedBy=quot;parentquot;, cascade = CascadeType.REMOVE, orphanRemoval = true List children = new ArrayList; 筆者測試過,混著用也是可以的。若大家看過其他教程,可能會覺得orphanRemoval = true 和 CascadeType 總是一起出現,但它們其實是分別操作的。單獨使用orphanRemoval = true,有時候則是為了不會出現無主的child,但這不代表parent和child的想要同步更新。 JPA Entity 的生命週期 Spring Data跟傳統的資料庫Selete,Create,Update,Delete SQL 語句有所不同。也就是這個不同,它的CascadeType比資料庫的Cascade Update和Cascade Delete更強大。 Spring Data 預設其實是使用 jakarta.persistence.EntityManager,每個Entity主要分為四個狀態 Transient New 不在EntityManager的掌控中 Managed 在EntityManager的掌控中,將會在下次flush時,變成sql create或update statement Detached 脫離EntityManager的掌控,不受flush影響 Removed 在EntityManager的掌控中,將會在下次flush時,變成sql delete statement 在Spring Data Jpa 以前,我們若要直接操作Hibernate,經常見到persist, remove的寫法 entityManager.persistentity; entityManager.removeentity; entityManager.detachentity; entityManager.mergeentity; 其實persist就是把處於Transient、Removed的entity,改為Managed。而remove就是把Managed改為Removed。detach,merge也類似,就是Managed,Detached之間互換。 EntityManager最強大的是,它可以讓程序員不需要再為Managed狀態下的entity操心,它會自動判別下次flush,應該create還是update,如果完全沒有改動的,連update也不會執行。 註,flush和commit也有不同,flush就是從java寫到資料庫中,在資料庫commit前,還可以使用rollback放棄。 而Spring Data,則是進一步簡化,它把persist改為save,remove改為delete,然後自動選擇flush的時機。 CascadeType 在解釋完Entity 的生命週期後,終於可以回到CascadeType了。這裏的CascadeType不是資料庫的Cascade操作,其實它是指EntityManager的狀態操作是否有傳遞關係。亦即是,persistparent時,要不要連同child也一起操作 我們查看 CasecadeType 的原始碼,就可以發現可以被傳遞的操作共有以下這些 PERSIST MERGE REMOVE REFRESH DETACH ALL 以上全部 這裏的 CasecadeType.PERSIST ,跟資料庫的 Cascade Update 是不一樣的。資料庫裏的 Cascade Update,是指當 Parent 的 Primary Key 有變,對應child的 Foreign Key也一起變。但因為 JPA Entity 的機制, Parent 的 Primary Key 不可以改變,理論上不會發生類似資料庫的 Cascade Update,頂多有 Cascade Delete。 CasecadeType.PERSIST 就像之前述的生命週期解說一樣, 把 parent和 child 一起拉到受管理的狀態。 註 CascadeType.REMOVE有點尷尬,似乎有更特別的使用規範。筆者測試過,在某些情況下,CascadeType.REMOVE無法處理ForeignKey問題,又或者是,刪除的順序不對。詳見 spring boot data deletion Reference entitylifecyclemodel spring boot data deletion

「內身份證」袋袋平安!澳門9月1號可申領居住證!
其他
澳門生活圈・2018-08-18

澳門 近日 國務院辦公廳將印發 《港澳臺居民居住證申領發放辦法》 並於9月1日正式實施 對於澳門嘅「慳錢一族」嚟講 想去內地開個銀行帳戶買買買 都係一件難事。。。 但從今以後 港澳台居民喺內地 學習!創業!同埋生活! 都會更加方便啦! 咁具體會有邊啲「大招」 係對澳門人有利嘅咧? 一齊埋嚟睇睇! 內地居住證可以「袋袋平安」喇! 呢個居住證可以令澳門人喺內地享受3項權利、6項基本公共服務、9項便利措施,可以話已經包括曬澳門人喺內地生活嘅大大細細! 以前大家番內地都要用回鄉證,但係只限用於出入境。 依家有咗居住證,想喺大陸網上買飛,自助取飛、出行住酒店、連叫個外賣都方便唔少(吃貨Pe上線)! 咁回鄉證同居住證嘅區別又喺邊? 1.制發依據不同港澳居民居住證發放是依據即將實施的《港澳臺居民證據證申領發放辦法》,港澳居民來往內地通行證(回鄉證)的依據是中國公民因私往來香港、澳門的管理辦法。 2.功能定位不同 港澳居民居住證主要是為符合法定條件的港澳居民在內地居住提供身份證明,並享有相關的權利、基本的公共服務和便利而制發的。回鄉證作為一種旅行證件,主要是為港澳居民中的中國公民來往內地提供一個身份憑證。 3項權利 勞動就業 參加社保 住房公積金 6項服務 義務教育 基本公共就業服務 基本公共衛生服務 公共文化體育服務 法律援助 其他法律服務 9項便利 辦理機動車登記 申領機動車駕駛證 報名參加職業資格考試、申請授予職業資格 辦理生育服務登記及在內地(大陸)住宿旅館 乘坐國內航班、火車等交通運輸工具 辦理銀行、保險、證券和期貨等金融業務 與內地(大陸)居民同等待遇購物 購買公園及各類文體場館門票進行文化娛樂商旅消費 另外,國務院港澳事務辦表示: 澳門居民居住證上將載有,澳門居民公民身份號碼。內地首次喺法律上明確為澳門居民編制公民身份號碼,亦係按照國家標準編制,與內地其他省、自治區、直轄市統一編制。 而呢個居住證將使用18位號碼 同內地身份證一模一樣! 未來內地嘅身份證閱讀機 將可以快速咁審核澳門居民居住證 太方便喇! 咁點先可以申領到居住證? 按照規定,前往內地大陸居住半年以上,符合有合法穩定就業、合法穩定住所、連續就讀條件之一的港澳台居民,可以向公安機關申請辦理港澳台居民居住證。 受理點將於月底前公布,申請受理後,20個工作日能領取證件。 而申請條件都係非常容易滿足 拜拜,就業許可證! 8月3日,國務院宣佈關於取消一批行政許可等事項嘅決定,其中包括取消澳門居民喺內地就業許可事項。 簡單啲講,以後澳門人到內地企業工作就可以除去繁瑣嘅申請各種證件步驟,直接喺內地就業創業!(例如嚟一場話嚟就嚟嘅大跳槽!) 另外下個月港珠澳大橋就開通喇 據悉 香港與大陸珠海之間的通車時間 縮減至30分鐘 亦啫係話港珠澳正式形成 一小時經濟生活圈 進一步拉近澳門同內地嘅聯繫! 圖片來源:MacauLife、東網、橙新聞、 國務院港澳事務辦公室、網絡 素材來源:力報、澳門電台、新京報 版權屬於原作者 編輯撰寫:小Pe 本號原創文章,未經授權,不得轉載

澳門巴黎將於2017年2月3日至5日舉行 《傳奇音樂會》向一眾巨星致敬
音樂聯合國
LifeMag Editor・2016-11-04

最經典、最大型以及被視為全球最成功的現場模仿名人表演-《傳奇音樂會》將於2017年2月3日至5日登陸澳門巴黎人,這將是其在澳門首次的特別限時演出。演唱會曾多次被選為美國拉斯維加斯排行第一的模仿巨星表演,門票將於11月2日星期三起透過各大金光票務售票處公開發售。 演唱會巨星雲集, Elvis Presley、Adele、David Bowie、Madonna、Prince以及Taylor Swift等名人,屈時聯同出色的樂隊以及舞者同台演出。蜚聲國際的《傳奇音樂會》由On Stage Enterprise擁有及營運,是巨星扮演業界的先鋒,其一直致力增添模仿名人的表演者。 每位表演者不但於外型、表情及唱腔均能完美演繹各位巨星,向一眾巨星標誌性的音樂表達敬意。《傳奇音樂會》以精心打造的戲劇場景、華麗的服裝以及精湛的特效聞名,包括最先進的多媒體技術、舞台燈光、影像及音響系統。 David Brighton憑着維肖維妙的動作,加上艷麗的服裝,精心製作的舞台演出以及完美的模仿歌唱方式,使他被廣泛稱讚為全球最佳模仿David Bowie的藝人。他將會在演唱會中帶來David Bowie的不同面貌及角色,包括「Thin White Duke」以及「Ziggy Stardust」。 Taylor Swift 則由Elizabeth Scarborough扮演。Elizabeth由2006年開始成為Taylor的狂熱粉絲,精通其所有歌曲,表演中更把偶像的魅力、歌聲及性格融合完美呈現。 Frank Moore在模仿Prince最受歡迎的歌曲《Purple Rain》以及《I Would Die 4 U 》時所展現令人驚艷的準確度以及像Prince般的活力,令觀眾難以相信在台上的不是Prince本人。 J.C. Brando於過去五年間完美地呈現了巨星Adele的魅力。她於美國洛杉磯的阿蘇薩太平洋大學(Azusa Pacific University)修讀聲樂與舞台劇,以及在英國牛津大學修讀戲劇,透過多年來付出和努力,成功立足於全球的專業表演事業之中,曾參與《Annie Get Your Gun》以及《Hello Dolly》兩部音樂劇,並到世界各地巡演。 Kevin Mills將貓王Elvis Presley直實演繹出來,令他成為扮演業界最受追捧的表演者之一。他參與過許多公開演出,包括總統的就職典禮以及電視節目,他恰到好處的動作,融合極神似的聲線、魅力,配合精心製作的服裝,使他在Gracelandrsquo;s Ultimate Elvis Tribute Artists Contest中被認為是全球扮演貓王的最佳表演者之一。 扮演Madonna 的Kimberly Goltry於10歲時已經開始表演,精通不同的人物角色,在加入《傳奇音樂會》前曾參演《Annie》以及《Playgirls of Rock amp; Roll》。 演唱會及門票詳情: 活動 傳奇音樂會 日期及時間 2017年2月3日(星期五) 晚上8時 2017年2月4日(星期六) 下午2時及8時 2017年2月5日(星期日) 下午6時 場地 澳門巴黎人 巴黎人劇場 票價 澳門幣 港幣480元 (A區) 澳門幣 港幣380元 (B區) 澳門幣 港幣180元 (C區) 船票套票 觀眾可另加澳門幣港幣108元購買包括金光飛航往返港澳雙程船票的套票(C區門票不適用) 售票處 金光票務 網上訂購:www.cotaiticketing.com 售票處: o 澳門巴黎人 ndash; 一樓正門大堂售票處及五樓巴黎人劇場售票處 o 澳門威尼斯人 ndash; 金光綜藝館及酒店正門大堂售票處 o 澳門四季酒店 ndash; 百利宮trade;售票處 o 澳門金沙reg; ndash; 一樓售票處 o 金沙城中心 ndash; 喜來登酒店正門及假日酒店正門售票處 電話訂購: o 澳門熱線:853 2882 8818 o 香港熱線:852 6333 6660 o 中國內地免費熱線:4001 206 618 香港快達票(將額外收取每張門票的顧客服務費) 網上訂購:www.HKTicketing.com 電話訂購:852 3128 8288 澳門廣星傳訊 網上訂購:www.macauticket.com 門市據點資料請瀏覽:www.macauticket.comTicketWebServiceStations.aspx 電話訂購:853 2855 5555

關島跳傘
走遍世界
海闊天空 // Sio・2016-05-06

我一直都很想跳傘,嘗試飛天的感覺,來關島前得知有這項活動,還有人陪一齊玩,實在多興奮,但同時我又怕得要命,因為我很怕離心力,從來不玩 Bungee Jump 也不坐遊樂場的 Rollar Coaster 跳傘當天我在上飛機之前都怕得要很,但認真說,上了飛機之後真再沒砰砰砰的急速心跳,我想是跟生孩子同一個的道理吧,到了最後關頭怕也沒用,只好拼命完成任務!雖然終於到我被拋去出時我露出了前所未有的驚嚇模樣,但其實那一刻我並沒有太過害怕,也沒感到強烈的離心力,而是接受得到的離心再加上飄飄然的感覺,真玄了吧!其實我出發之後在網上尋找了許多人們跳傘的感想,然而讀了再讀都沒辦法感受,唯有自己跳過才會明白!只能說,想跳就放膽跳吧,我給你勇氣,信我,真沒你想像般可怕! 我跳的是8000米,這個Free Fall的過程是大概15秒,之後教練便開傘,然後會被扯得高高,這一下倒驚心動魄,因為來得很突然,但再回落之後、回魂之時我看見關島無比漂亮的海岸線,馬上感覺似是在天際飛翔一樣自在!但大家千萬千萬千萬要記著,不要向下望,因為向下望的話會超越頭暈,我一不小心往下望便會暈到想吐,只有向前看才會感覺良好! Skydive Guam Inc可跳8,000呎、10,000呎、12,000呎或14,000呎,當然是越高越貴,8000呎的跳傘費用為289美元,拍照拍片要多付140美元,完成後有證書作紀念WEB www.skydiveguam.comenhomeADD 73404 Neptune Blvd Barrigada, Guam 96913TEL 16714755555Email email@skydiveguam.com ============================海闊天空 一個女生遊歷半個地球的流浪故事FB 粉絲頁 www.facebook.comwalkedbysioIG 相集 instagram.comcestsioYOUTUBE 頻道 httpsgoo.glfMZnEP============================

AMIBROKER速成教學 輸入恆生指數期貨1分鐘數據
創富坊
程式交易 www.quants.hk (導師: 財經書藉作家: 麥振威)・2015-03-25

在使用Amibroker作分析時,當然需要先有數據,大家其實可以將港股及恆生指數期貨的數據自行輸入Amibroker,這樣你不但可以利用它觀看不同技術指標的在過去的走勢中的表現,同時也可以利用程式分析你個人的交易策略。 首先建議開啟一個數據庫,專放期指的數據,因為從網上下載的股票數據是「Daily」的,你可將其轉為日線圖、周線圖、月線點,但卻不能轉為5分鐘點、1分鐘點等,原因是網上沒有「Intraday」的數據提供。 我們的網頁www.quants.hk也有2012年至2013年的期指一分鐘數據免費下載,但參加Quants Training課程的學員我們會免費提供期指過去十年的一分鐘數據,下載數據後便能自行輸入至Amibroker進行分析。 留意,由於我們輸入的不是「Daily」的數據,而是「Intraday」的數據,故此開啟數據庫後便需要先在「database settings」中更改一些設定。 將「base time interval」改為「1 minutes」 任何自行輸入的數據也要運用「import wizard」這功能,在「file」中選「import wizard」 再選「pick file」 選擇提供期指數據,這大多是excel 的file 大部份初學者在輸入數據時失敗,便是在這個步驟中出錯。 大家看到「column 1」、「column 2」、「column 3」等,其實你在column中的選擇是需要根據你的excel file不同的格式而改變的。 假如你的期指數據在excel file中的排列是第一欄是「年月日」、第二欄是「時間」、第三欄是「開市價」、第四欄是「最高價」、第五欄是「最低價」、第六欄是「收市價」、第七欄是「成交量」、第八欄是「平均成交價」。 但你只想在Amibroker的數據庫中顯示第一欄至第七欄的數據,第八欄的「平均成交價」你不想出現在數據庫之中。 那第一欄便應選「YMD」,這代表了年月日、第二欄選「TIME」、第三欄選「OPEN」、第四欄選「HIGH」、第五欄選「LOW」、第六欄選「CLOSE」、第七欄選「VOLUME」,雖然第八欄的「平均成交價」你不想出現在數據庫中,但在設定時不能不選的,你要選「SKIP」,代表你不想要這一欄。 另外,大家必需留意在設定中大家看到「DATA FILE SAMPLE」這代表了你的EXCEL FILE中的數據是如何排列,如果第一間的 1 是沒有意思的,很可能是符號,那便在第一欄先選「SKIP」,然後再按次序來選擇COLUMN中的選項。 此外,大家要注意,EXCEL的每一欄數據,在儲存後可以是用「TAB」、「SPACE」或「COMMA」來分隔的,故此在設定中的「SEPARATOR」便要選擇與EXCEL FILE相同的類別,如所匯入的EXCEL FILE是用「COMMA」來分隔每欄數據,那便在「SEPARATOR」中選「COMMA」。至於你的EXCEL是用那一種來分隔數據,只要看看「DATA FILE SAMPLE」便可得知 輸入數據後,在「CHART」中可看到EXCEL FILE的名稱,這個名稱在你的Amibroker中便代表了期指的數據,直接點擊兩次便能在右邊出現期指的圖表。但切記留意一點,我們不單要看圖表,還要利用這些數據做backtest,由於Amibroker本身不會自動得知你輸入的數據的特性,,所謂特性便是指期指每張的按金是多少,每點價值50元,假設你在backtest時設定最初投入的金額是20萬元,想測試一年後資金增值多少,但很可能交易兩個月後,其實你的資金已不足夠買入一張期指,在真實交易時便根本無法再繼續交易,但若你不事前在Amibroker中輸入期指一張的按金是多少,那程式是無法去計算的,這會令backtest的結果出現錯誤。 故此,匯入歷史數據後,要在「symbol information」中的「margin deposit」輸入期指每張的按金是多少,再在「point value」中輸入「50」 輸入所有資料後,只要按右鍵,便可發現「Intraday」的部份已由不能選擇變成可以選擇1分鐘、5分鐘、15分鐘等圖表。 這部份很多初學者也遇上問題,但其實輸入數據的過程並不複習,只要多試幾次便能成功,而輸入數據後,Amibroker使用圖表的介面跟很多其他的平台也很相似,對初學者來說十分方便。