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集成相关推荐

  1. 将JPA Hibernate与OptaPlanner集成

    我们一直在改进OptaPlanner与JEE其余部分的集成,因此,构建可以正常工作的最终用户应用程序更加容易. 让我们看一下改进的JPA Hibernate集成. 基础 JPA Hibernate和O ...

  2. hibernate jpa_教程:Hibernate,JPA –第1部分

    hibernate jpa 这是关于使用Hibernate和JPA的教程的第一部分. 这部分是对JPA和Hibernate的介绍. 第二部分将研究使用Spring ORM组合一个Spring MVC应 ...

  3. java hibernate的使用_《Hibernate快速开始 – 4 – 使用JAVA持久层 API (JPA)教程》

    章节目标 使用JPA EntityManagerFactory 使用注解提供映射信息 使用 JPA 接口 本教程可在 entitymanger/ 路径下下载 4.1. persistence.xml ...

  4. jpa jsf_完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第1部分

    jpa jsf 我们创建了这篇文章,将展示如何使用以下工具创建完整的Web应用程序:Tomcat7,带有Primefaces的JSF2(Facelets和Libraries)(具有AutoComple ...

  5. jpa jsf_完整Web应用程序Tomcat JSF Primefaces JPA Hibernate –第2部分

    jpa jsf 托管豆 这篇文章是本教程第1部分的继续. 在" com.mb"包中,您将需要创建以下类: package com.mb;import org.primefaces. ...

  6. jpa jsf_完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第3部分

    jpa jsf Primefaces AutoComplete,JSF转换器 这篇文章从第一部分和第二部分继续. JSF拥有Converter工具,可以帮助我们从用户视图中获取一些数据并将其转换为从数 ...

  7. jboss4.2.3_JBoss 4.2.x Spring 3 JPA Hibernate教程

    jboss4.2.3 在花费大量时间在网上搜索之后,尝试找到对几个项目使用Spring,JPA和Hibenate的最有效方法,我们得出了将在下面介绍的配置的结论. 将Spring与JPA和Hibern ...

  8. JPA – Hibernate –包级别的类型映射

    当我们最终成熟到可以在JPA中使用某些自定义类型映射时,我们通常会停留在某些提供程序特定的解决方案上,因为JPA本身并未定义任何实现此功能的机制. 让我为您展示一个JPA提供程序Hibernate的自 ...

  9. JPA / Hibernate:基于版本的乐观并发控制

    本文是Hibernate和JPA中基于版本的乐观并发控制的简介. 这个概念已经很老了,上面已经写了很多东西,但是无论如何我都看到了它被重新发明,误解和滥用. 我在编写它只是为了传播知识,并希望引起人们 ...

最新文章

  1. LIO-SAM: 紧耦合的激光与惯导里程计方案
  2. 为IP签发SSL证书
  3. python 类实例化理解
  4. Django 生成验证码或二维码 pillow模块
  5. 多视图几何总结——从本质矩阵恢复摄像机矩阵
  6. 【Linux】一步一步学Linux——gcc命令(249)
  7. webrtc简单案例——音视频采集和播放
  8. 定义坐标系-尚未成功
  9. 自写sonar 插件加载到sonar 服务中的展示信息
  10. 数据库与数据库管理系统
  11. CentOS配置syslog发送到服务器
  12. perl linux 运行,在Ubuntu中启动时运行perl脚本
  13. 图解迷宫算法(广度优先遍历)
  14. vscode配置代理
  15. react-router-dom v6 使用
  16. Jquery.Print实现表格打印
  17. ppp lcp协商报文有哪些_课后分享PPP协议第十三周
  18. 智慧公厕系统让如厕成为一种享受
  19. 图解设计模式-设计模式七大原则
  20. 研华1716板卡的问题

热门文章

  1. jzoj5353-村通网【最小生成树】
  2. P3224 [HNOI2012]永无乡(并查集+权值线段树合并/平衡树)
  3. 2021牛客暑期多校训练营1 J-Journey among Railway Stations(线段树+思维转化)
  4. codeforces 938D Buy a Ticket 有初值的Dijkstra、有趣的题目
  5. K8S Learning(1)——简介
  6. 使用JDOM2.0.4 操作/解析xml
  7. 设计模式之静态代理模式实战
  8. 组合模式的安全模式与透明模式
  9. Shell入门(二)之变量
  10. ssm(Spring+Spring mvc+mybatis)——web.xml