我是hibernate的新手,很难理解hibernate中逻辑名的用途是什么?我已阅读此http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#PhysicalNamingStrategy
我无法理解类属性名称,逻辑名称和物理名称之间的区别。 我理解物理名称是db中的名称,属性名称当然是java类属性名称。但逻辑名称的作用是什么?为什么有2个阶段现在称为ImplicitNamingStrategy和PhysicalNamingStrategy?
答案 0 :(得分:1)
逻辑名称在java / hiberate配置中定义。 物理名称是数据库中的名称。 根据官方文档中的命名策略部分:http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#naming]:
对象模型到关系数据库的映射的一部分是将对象模型中的名称映射到相应的数据库名称。 Hibernate将此视为两阶段过程:
第一阶段是从域模型映射中确定正确的逻辑名称。逻辑名可以由用户显式指定(使用@Column或@Table,例如),也可以由Hiernate通过ImplicitNamingStrategy契约隐式确定。
其次是将此逻辑名称解析为PhysicalNamingStrategy合同定义的物理名称。
答案 1 :(得分:1)
有两个阶段的想法是分离关注或责任......让你更灵活......例如:假设你在一个大型项目中,有2个团队,一个负责数据库设计(包括命名),另一个用于对象建模...数据库团队总是在命名标准上进行更改(无论出于何种原因),但是,他们负责实施物理名称策略,并且他们将合同视为逻辑name应该是更低的蛇案例(例如:dummy_attribute)...如果hibernate不允许你定义一个逻辑namimg策略,那么你必须在较低的蛇案例中命名你的类属性...这就是两个阶段的原因