相关疑难解决方法(0)

Hibernate SessionFactory与EntityManagerFactory

我是Hibernate的新手,不知道是否要使用SessionFactoryEntityManagerFactory获取hibernate会话.两者有什么区别?优点缺点?

java hibernate jpa sessionfactory hibernate-entitymanager

234
推荐指数
5
解决办法
12万
查看次数

使用 EclipseLink 和 Hibernate (JPA2.1) 生成架构 - @ForeignKey 被忽略

我正在测试 JPA2.1 和新的“模式生成”功能。为此,我在 HyperSQL 数据库下测试了两种实现:

  • EclipseLink 2.5.2-M1 是参考实现。
  • 休眠4.3

我对实现没有任何偏好(甚至对性能也没有偏好)。我测试了 EclipseLink,因为它是第一个可用的 JPA2.1 实现,但现在,Hibernate 4.3 已经出现并且兼容 JPA2.1。我唯一想要的就是获得独立于 JPA 提供程序的东西 - 除了配置(如缓存、日志记录、静态编织等)。

至于模式生成,我对几个方面感兴趣:

  • 我对 EclipseLink 的默认命名策略不满意:实体类名称或字段/属性名称大写,使其不可读。而且我不扩展会话定制器(我尝试过一次,我认为添加注释更容易,危险更小......)。
  • 我不喜欢在查询中使用大写;好吧,这是个人喜好,但我在 Linux 上使用 mySQL 也遇到了问题,因为它们不遵循标识符,并且关键字不区分大小写,除非您双引号它们SQL 习惯用法。
  • 默认情况下,Hibernate 并没有好多少,但可以使用ImprovedNamingStrategy. 遗憾的是,它没有使用显式名称来命名外键:FK_8gc2pk9u5bsbhpi91x93c77o不是显式的,而是fk_foobar_sample显式的。

因此,我添加了@Table,@JoinColumn@Column注释来强制我的命名策略,现在我被外键生成阻止了,它的支持似乎很差(当遵守 JPA2.1 时):

  • Hibernate 希望我使用@org.hibernate.annotations.ForeignKey,为此我需要注释字段或属性。但它是一个 hibernate 注释,因此它不符合 JPA2.1。
  • EclipseLink 永远不会生成外键约束,除非我将 a@JoinColumn和 aforeignKey@ForeignKey(name="..."). 但是,当它生成外键时,定义丢失了(即:),ALTER TABLE foobar ADD CONSTRAINT fk_foobar_zorg FOREIGN KEY () REFERENCES …

hibernate eclipselink java-7 jpa-2.1

5
推荐指数
1
解决办法
2098
查看次数