今天小博老师继续带领大家学习域模型命名的物理命名策略。许多组织定义关于数据库对象(表,列,外键等)的命名。物理命名策略是帮助实现这样的命名规则,而不必将显式名称硬编码到映射中。
隐式命名策略的目的是确定在没有明确指定的情况下把属性名与列明对应起来,比如:把名为accountNumber的属性映射到逻辑列名称accountNumber。物理命名策略的目的是使用更为简洁命名规则。比如,accountNumber使用物理命名规则时,物理列名称应该缩写为acct_num。
的确,acct_num的定义可以在隐式命名策略中处理。但问题应该分开来看,不管属性是否显式指定列名称或是否隐式确定都可以应用物理命名策略。如果未给出显式名称,则应该使用隐式命名策略。至于如何选择取决于需求和意图。
默认是将逻辑名作为物理名称。然而,应用程序可以定义自定义实现Physicalnamingstrategy。下面是PhysicalNamingStrategy例子:
l使用下划线而不是骆驼命名法
l用标准缩写代替某些单词
有多种方法来指定要使用的PhysicalNamingStrategy。 首先,应用程序可以使用hibernate.physical_naming_strategy配置设置来指定实现:
l引用实现org.hibernate.boot.model.naming.PhysicalNamingStrategy的类
l实现org.hibernate.boot.model.naming.PhysicalNamingStrategy类
其次,应用程序和集成可以利用org.hibernate.boot.MetadataBuilder#applyPhysicalNamingStrategy。