日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hibernate与jpa_将JPA Hibernate与OptaPlanner集成

發(fā)布時間:2023/12/3 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hibernate与jpa_将JPA Hibernate与OptaPlanner集成 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

hibernate與jpa

我們一直在改進(jìn)OptaPlanner與JEE其余部分的集成,因此更容易構(gòu)建可以正常工作的最終用戶應(yīng)用程序。 讓我們看一下改進(jìn)的JPA Hibernate集成。

基礎(chǔ)

JPA Hibernate和OptaPlanner都可以在POJO(普通的舊Java對象)上工作,因此只需在域?qū)ο笊咸砑右恍㎎PA批注以使其與JPA Hibernate保持一致,并添加一些OptaPlanner批注即可解決OptaPlanner的優(yōu)化問題。

在每個問題事實(shí)類上,通常只有JPA批注:

@Entity // JPA annotation public class Computer {private int cpuPower;private int memory;private int networkBandwidth;private int cost;... }

在每個計劃實(shí)體類上,都有JPA和OptaPlanner批注:

@PlanningEntity // OptaPlanner annotation @Entity // JPA annotation public class Process {private int requiredCpuPower;private int requiredMemory;private int requiredNetworkBandwidth;@PlanningVariable(...) // OptaPlanner annotation@ManyToOne() // JPA annotationprivate Computer computer;... }

不要將JPA實(shí)體(任何持久存儲在數(shù)據(jù)庫中的對象)與OptaPlanner規(guī)劃實(shí)體(在解決過程中被OptaPlanner更改的對象)混淆。

堅(jiān)持得分

默認(rèn)情況下,JPA Hibernate將通過Java序列化將Score放在BLOB列中。 這是不希望的,因?yàn)樗柚沽嗽贘PA-QL查詢中使用分?jǐn)?shù)。 此外,它在升級OptaPlanner版本時觸發(fā)數(shù)據(jù)庫問題。

因此,OptaPlanner 6.4.0.Beta1具有一個新的jar optaplanner-persistence-jpa ,其中包含每種評分類型的Hibernate類型。 像這樣使用它:

@PlanningSolution // OptaPlanner annotation @Entity // JPA annotation @TypeDef(defaultForType = HardSoftScore.class, typeClass = HardSoftScoreHibernateType.class) // Hibernate annotation public class CloudBalance implements Solution<HardSoftScore> {@Columns(columns = {@Column(name = "hardScore"), @Column(name = "softScore")}) // JPA annotationprivate HardSoftScore score;... }

這會將HardSoftScore放入2個INTEGER列,而不是BLOB列。 OptaPlanner參考手冊包含有關(guān)如何正確處理BigDecimal和/或可彎曲分?jǐn)?shù)的更多信息。

克隆陷阱

在JPA模型中,問題事實(shí)通常引用計劃解決方案,這可能會破壞計劃克隆(如果使用默認(rèn)計劃克隆器)。

為了克服這個問題,只需使用@DeepPlanningClone注釋注釋引用計劃解決方案或計劃實(shí)體的問題事實(shí)類:

@DeepPlanningClone // OptaPlanner annotation: Force the default planning cloner to planning clone this class too @Entity // JPA annotation public class Computer {@ManyToOneprivate CloudBalance cloudBalance;... }

這樣, Computer類也正在計劃克隆,并且克隆的cloudBalance字段將指向CloudBalance克隆。

結(jié)論

您可以對JPA Hibernate和OptaPlanner使用相同的域類,無需重復(fù)您的域!

翻譯自: https://www.javacodegeeks.com/2015/09/integrating-jpa-hibernate-with-optaplanner.html

hibernate與jpa

總結(jié)

以上是生活随笔為你收集整理的hibernate与jpa_将JPA Hibernate与OptaPlanner集成的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。