代码之家  ›  专栏  ›  技术社区  ›  Robert Petermeier

Hibernate NamingStrategy实现,用于维护调用之间的状态

  •  1
  • Robert Petermeier  · 技术社区  · 16 年前

    我正在做一个使用Hibernate和jboss5.1的项目。我们需要将实体类映射到遵循特定命名约定的Oracle表。我希望避免在注释中指定每个表和列名。因此,我目前正在考虑实现 org.hibernate.cfg.NamingStrategy .

    SQL命名约定要求列名称的后缀与表名的前缀相等。如果有一个表“T100\u RESOURCE”,则ID列必须命名为“RES\u ID\u T100”。

    为了在一个 NamingStrategy ,则实现必须维护状态,即它正在为其创建映射的当前类名。它将依靠冬眠

    • 总是打电话 classToTableName() 之前 propertyToColumnName()
    • 并通过调用 propertyToColumnName() 在下一次呼叫之前 classToTableName()

    这样做是安全的还是有冬眠会把事情搞混的情况?我不想在这里通过多个线程来解决问题(这可以通过将最后一个类名保存在 ThreadLocal

    1 回复  |  直到 16 年前
        1
  •  2
  •   skaffman    16 年前

    听起来真是个坏主意。像这样颠覆无状态接口几乎肯定会以眼泪告终,因为正如您所说,根本不能保证Hibernate会以正确的顺序调用东西。