Java 入门:从Hibernate到JOOQ(?)

Java 入门:从Hibernate到JOOQ(?),java,hibernate,jooq,Java,Hibernate,Jooq,我正在考虑从一开始就打破与Hibernate的关系,这样就不会有人受到伤害,并且会因为各种原因而改用JOOQ[1]、[2]、[3]等 但首先我想知道一些基本的事情,例如如何在Hibernate中对字符串进行模式约束: @NotEmpty(message = "Firstname cannot be empty") @Pattern(regexp = "^[a-zA-Z0-9_]*$", message = "First Name can only contain characters.") pr

我正在考虑从一开始就打破与Hibernate的关系,这样就不会有人受到伤害,并且会因为各种原因而改用JOOQ[1]、[2]、[3]等

但首先我想知道一些基本的事情,例如如何在Hibernate中对
字符串
进行模式约束:

@NotEmpty(message = "Firstname cannot be empty")
@Pattern(regexp = "^[a-zA-Z0-9_]*$", message = "First Name can only contain characters.")
private String firstname;
或者,如果修改JOOQ代码生成器是一件非常痛苦的事情,或者如果我想在我的后端进行修改,那么就直接修改代码生成器

缓存是什么?我知道,例如,重用语句,但不幸的是,我不知道是否需要寻找第三方库来为我进行更复杂的缓存,或者JOOQ是否已经能够为我完成所有这些

也许有人能给我一个关于如何开始一个更大的应用程序的建议。目前,我的工作流程如下所示:

  • 用MySQL手工编写我的数据库
  • 使用FlywayDB进行迁移版本控制,并将数据库部署到Tomcat
  • 使用JOOQ对数据库进行反向工程以生成Java文件
    • 这是我的代码生成器扩展的地方吗?例如,将JDBC时间戳转换为joda time
      DateTime
      ,并从上面生成约束,如
      @Pattern(..)
  • 实现DAO层
  • 实现存储库层
  • 实现服务层
  • 这有意义吗?还是我遗漏了什么?我这样问是因为直到现在我还是那种“我不想写SQL,因为我不想知道任何关于底层机制的事情”并且让Hibernate为我创建整个数据库的人。但是,在阅读了Hibernate带来的许多主要缺点和问题之后,我(几乎)相信,按照我上面描述的方式来做会更好

    我开始考虑使用JOOQ的开源版本,希望有一天,钱回来了,我可以申请JOOQ的开发者许可证

    话虽如此,我仍然对替代方案持开放态度,如果替代方案能够支持我的基本需求,我准备不使用Hibernate或JOOQ

    • 如果需要,可以进行优化
    • 类型安全
    • 可确认性(Hibernate几乎不提供AFAIC)
    • 不依赖于以后可能的迁移过程
    • 可伸缩性

    [1]
    [2]

    [3]

    所以jooq tad info列出了类似的产品(即标准Hipernate“泛化”又名JPA),但跳过了Batis家族(第一个iBatis改名为myBatis)我使用了iBatis+/-2005-2010,可以说是中间路线,我认为如果你问个人的具体问题,而不是一个大问题,你可能会得到更好的答案…@LukasEder Well,是的,老实说,我知道你迟早会发现这个问题,我希望一石二鸟:D,但我也可以把我的问题分成1)允许的字符模式2)扩展代码生成器3)缓存4)使用JOOQ的工作流。@LukasEder我已经创建和::)谢谢:)我会先看看具体的(1-3)。这些都是可以客观回答的。工作流程可能最好由社区来回答。