hibernate与jpa_将JPA Hibernate与OptaPlanner集成
hibernate与jpa
我们一直在改进OptaPlanner与JEE其余部分的集成,因此更容易构建可以正常工作的最终用户应用程序。 让我们看一下改进的JPA Hibernate集成。
基础
JPA Hibernate和OptaPlanner都可以在POJO(普通的旧Java对象)上工作,因此只需在域对象上添加一些JPA批注以使其与JPA Hibernate保持一致,并添加一些OptaPlanner批注即可解决OptaPlanner的优化问题。
在每个问题事实类上,通常只有JPA批注:
@Entity // JPA annotation
public class Computer {private int cpuPower;private int memory;private int networkBandwidth;private int cost;...
}
在每个计划实体类上,都有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实体(任何持久存储在数据库中的对象)与OptaPlanner规划实体(在解决过程中被OptaPlanner更改的对象)混淆。
坚持得分
默认情况下,JPA Hibernate将通过Java序列化将Score
放在BLOB
列中。 这是不希望的,因为它阻止了在JPA-QL查询中使用分数。 此外,它在升级OptaPlanner版本时触发数据库问题。
因此,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参考手册包含有关如何正确处理BigDecimal
和/或可弯曲分数的更多信息。
克隆陷阱
在JPA模型中,问题事实通常引用计划解决方案,这可能会破坏计划克隆(如果使用默认计划克隆器)。
为了克服这个问题,只需使用@DeepPlanningClone
注释注释引用计划解决方案或计划实体的问题事实类:
@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
克隆。
结论
您可以对JPA Hibernate和OptaPlanner使用相同的域类,无需重复您的域!
翻译自: https://www.javacodegeeks.com/2015/09/integrating-jpa-hibernate-with-optaplanner.html
hibernate与jpa
hibernate与jpa_将JPA Hibernate与OptaPlanner集成相关推荐
- 将JPA Hibernate与OptaPlanner集成
我们一直在改进OptaPlanner与JEE其余部分的集成,因此,构建可以正常工作的最终用户应用程序更加容易. 让我们看一下改进的JPA Hibernate集成. 基础 JPA Hibernate和O ...
- hibernate jpa_教程:Hibernate,JPA –第1部分
hibernate jpa 这是关于使用Hibernate和JPA的教程的第一部分. 这部分是对JPA和Hibernate的介绍. 第二部分将研究使用Spring ORM组合一个Spring MVC应 ...
- java hibernate的使用_《Hibernate快速开始 – 4 – 使用JAVA持久层 API (JPA)教程》
章节目标 使用JPA EntityManagerFactory 使用注解提供映射信息 使用 JPA 接口 本教程可在 entitymanger/ 路径下下载 4.1. persistence.xml ...
- jpa jsf_完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第1部分
jpa jsf 我们创建了这篇文章,将展示如何使用以下工具创建完整的Web应用程序:Tomcat7,带有Primefaces的JSF2(Facelets和Libraries)(具有AutoComple ...
- jpa jsf_完整Web应用程序Tomcat JSF Primefaces JPA Hibernate –第2部分
jpa jsf 托管豆 这篇文章是本教程第1部分的继续. 在" com.mb"包中,您将需要创建以下类: package com.mb;import org.primefaces. ...
- jpa jsf_完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第3部分
jpa jsf Primefaces AutoComplete,JSF转换器 这篇文章从第一部分和第二部分继续. JSF拥有Converter工具,可以帮助我们从用户视图中获取一些数据并将其转换为从数 ...
- jboss4.2.3_JBoss 4.2.x Spring 3 JPA Hibernate教程
jboss4.2.3 在花费大量时间在网上搜索之后,尝试找到对几个项目使用Spring,JPA和Hibenate的最有效方法,我们得出了将在下面介绍的配置的结论. 将Spring与JPA和Hibern ...
- JPA – Hibernate –包级别的类型映射
当我们最终成熟到可以在JPA中使用某些自定义类型映射时,我们通常会停留在某些提供程序特定的解决方案上,因为JPA本身并未定义任何实现此功能的机制. 让我为您展示一个JPA提供程序Hibernate的自 ...
- JPA / Hibernate:基于版本的乐观并发控制
本文是Hibernate和JPA中基于版本的乐观并发控制的简介. 这个概念已经很老了,上面已经写了很多东西,但是无论如何我都看到了它被重新发明,误解和滥用. 我在编写它只是为了传播知识,并希望引起人们 ...
最新文章
- LIO-SAM: 紧耦合的激光与惯导里程计方案
- 为IP签发SSL证书
- python 类实例化理解
- Django 生成验证码或二维码 pillow模块
- 多视图几何总结——从本质矩阵恢复摄像机矩阵
- 【Linux】一步一步学Linux——gcc命令(249)
- webrtc简单案例——音视频采集和播放
- 定义坐标系-尚未成功
- 自写sonar 插件加载到sonar 服务中的展示信息
- 数据库与数据库管理系统
- CentOS配置syslog发送到服务器
- perl linux 运行,在Ubuntu中启动时运行perl脚本
- 图解迷宫算法(广度优先遍历)
- vscode配置代理
- react-router-dom v6 使用
- Jquery.Print实现表格打印
- ppp lcp协商报文有哪些_课后分享PPP协议第十三周
- 智慧公厕系统让如厕成为一种享受
- 图解设计模式-设计模式七大原则
- 研华1716板卡的问题
热门文章
- jzoj5353-村通网【最小生成树】
- P3224 [HNOI2012]永无乡(并查集+权值线段树合并/平衡树)
- 2021牛客暑期多校训练营1 J-Journey among Railway Stations(线段树+思维转化)
- codeforces 938D Buy a Ticket 有初值的Dijkstra、有趣的题目
- K8S Learning(1)——简介
- 使用JDOM2.0.4 操作/解析xml
- 设计模式之静态代理模式实战
- 组合模式的安全模式与透明模式
- Shell入门(二)之变量
- ssm(Spring+Spring mvc+mybatis)——web.xml