需要Hibernate Mapping吗?

Fra*_*ank 1 java hibernate hibernate-mapping

我是 Hibernate 的新手,我下载了一个示例 Java 应用程序并将其修改为更有用,到目前为止,在我的应用程序中,我有两个在我的 Java 应用程序中定义的数据库类:Actor.java 和 City.java 他们每个人都有.hbm.xml 文件如下所示:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Jun 17, 2009 11:42:48 AM by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
    <class name="sakila.entity.Actor" table="actor" catalog="sakila">
        <id name="actorId" type="java.lang.Short">
            <column name="actor_id" />
            <generator class="identity" />
        </id>
        <property name="firstName" type="string">
            <column name="first_name" length="45" not-null="true" />
        </property>
        <property name="lastName" type="string">
            <column name="last_name" length="45" not-null="true" />
        </property>
        <property name="lastUpdate" type="timestamp">
            <column name="last_update" length="19" not-null="true" />
        </property>
    </class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

<hibernate-mapping>
    <class name="sakila.entity.City" table="city" catalog="sakila">
        <id name="cityId" type="java.lang.Short">
            <column name="city_id" />
            <generator class="identity" />
        </id>
        <property name="city" type="string">
            <column name="city" length="45" not-null="true" />
        </property>
        <property name="countryId" type="string">
            <column name="country_Id" length="45" not-null="true" />
        </property>
        <property name="lastUpdate" type="timestamp">
            <column name="last_update" length="19" not-null="true" />
        </property>
    </class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

到目前为止,该应用程序运行良好。但我的问题是,如果我需要更改我的应用程序以便它可以处理数据库中的数百个对象,例如 Actor 和 City,我是否需要定义所有映射文件?如果我在编程时不知道用户可能会查询哪些 db 对象,我是否需要定义所有这些对象,这似乎是不可能的,所以我的问题是:*.hbm.xml 文件是否必要?如果我需要编写一个应用程序,让用户查询他需要的任何对象,而我可能甚至不知道数据库中有什么,那么如何编写这样的应用程序?可以使用 Hibernate 吗?

tin*_*iry 7

Frank *.hbm.xml 文件不是必需的。Hibernate 注释是定义映射而不使用 XML 文件的最新方法。除了 XML 映射元数据之外,您还可以使用注解,或者作为 XML 映射元数据的替代。在你的情况下,

@Entity
@Table(name ="actor")
public Class Actor
{
    @Column(name = "actor_id")
    private Short actorId;

    @Column(name = "first_name")
    private String firstName;

    @Column(name = "last_name")
    private String lastName;

    @Column(name = "last_update")
    private Timestamp lastUpdate;
}

@Entity
@Table(name ="city")
public Class City
{
    @Column(name = "city_id")
    private Short cityId;

    @Column(name = "city")
    private String city;

    @Column(name = "country_Id")
    private String countryId;

    @Column(name = "last_update")
    private Timestamp lastUpdate;
}
Run Code Online (Sandbox Code Playgroud)

Hibernate Annotation 将元数据与代码一起放入 POJO java 文件中,这有助于用户在开发过程中同时了解表结构和 POJO