Hibernate如何映射列?

我正在制作Spring的REST api,以从数据库中检索数据。但是我想了解Hibernate如何精确地将列映射到POJO?

数据库中的列名类似于“ FIRST_NAME”,“ LAST_NAME”。在POJO中,我将属性名称设置为“ firstName”和“ lastName”。但是,Hibernate仍然可以正确映射。怎么发生的?

weiqingtao 回答:Hibernate如何映射列?

通常,我们将使用@Column显式定义映射到a属性的列名称。如果未使用@Column,它将使用配置的命名策略来确定属性应映射到哪一列。

我猜您正在使用自定义的PhysicalNamingStrategy,它将{{CamelCase}属性映射到HIGHER_UNDERSCORE列。

有关命名策略行为的更多信息,请参考docs


正如您在评论中提到的那样,您正在使用spring,我相信您也正在使用spring boot,默认情况下它会将物理命名策略配置为SpringPhysicalNamingStrategydocs):

  

默认情况下,Spring Boot使用以下命令配置物理命名策略:   SpringPhysicalNamingStrategy。该实现提供了相同的   Hibernate 4的表结构:下划线替换所有点   骆驼肠衣也被下划线代替。默认情况下,所有   表名以小写形式生成,但是可以   如果您的模式需要,请覆盖该标志。

     

例如,一个TelephoneNumber实体被映射到   电话号码表。

,

我相信您已经在某个地方创建了一个hbm文件(该文件主要用于基于XML的文件,而不是用于基于注释的,因为您没有提供代码),它是用XML编写的文件。该文件允许使用POJO类映射列。 我们可以定义以下映射文件,该文件指示Hibernate如何将已定义的一个或多个类映射到数据库表。 (这通常是为了您的理解)

例如:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.nearex.scheduler.dto">
    <class name="SchedulerJobMaster" table="scheduler_job_master">
        <id name="jmId" type="int">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="firstName" type="string">
            <column name="FIRST_NAME"/>
        </property>
        <property name="lastName" type="string">
            <column name="LAST_NAME"/>
        </property>              

    </class>    
</hibernate-mapping>

您可以阅读本教程以获得更好的参考:https://www.tutorialspoint.com/hibernate/hibernate_mapping_files.htm

本文链接:https://www.f2er.com/3053570.html

大家都在问