需要java Hibernate映射吗?
我是Hibernate新手,我下载了一个示例Java应用程序,并对其进行了修改,使其更加有用。到目前为止,在我的应用程序中,我有两个db类,它们是在Java应用程序中定义的:Actor。爪哇和城市。JAVA 他们每个人都有一个。哈佛商学院。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>
<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>
到目前为止,这个应用程序运行得很好。但我的问题是,如果我需要更改我的应用程序,以便它能够处理数据库中数百个对象,如Actor和City,我需要定义所有映射文件吗?如果在编程时我不知道用户可能查询哪些db对象,我需要定义所有这些对象吗?这似乎是不可能的,所以我的问题是:是*。哈佛商学院。需要xml文件吗?在这种情况下,我需要编写一个应用程序,让用户查询他需要的任何对象,而我可能甚至不知道数据库中有什么,如何编写这样的应用程序?冬眠可以吗
# 1 楼答案
如果您的系统是如此动态,以至于您不知道用户将查询哪些表,那么我看不出您将如何将这些表映射到相应的POJO。Hibernate的主要重点是将模式中的表映射到Java应用程序中的对象,主要是通过Hibernate查询语言(HQL)或可用的编程API之一
然而,在hibernate中使用直接SQL并返回非托管对象是可能的,尽管这在功能上比使用HQL或查询API要有限得多。要做到这一点,您将使用与以下类似的代码:
此转换器按名称将SQL查询中的列映射到指定POJO的属性。在实践中,类型转换是具有挑战性的。在许多情况下需要设置刻度。你也可以使用变压器。aliasToEntityMap,返回映射列表,其中每个映射都是列名到值的映射
当前Hibernate核心文档的第18.1.5节简要介绍了这一点
# 2 楼答案
弗兰克*。哈佛商学院。xml文件不是必需的。Hibernate注释是不使用XML文件定义映射的最新方法。您可以在XML映射元数据之外使用注释,也可以使用注释替换XML映射元数据。就你而言
Hibernate注释将元数据与代码一起放入POJO java文件中,这有助于用户在开发过程中同时理解表结构和POJO
# 3 楼答案
如果需要查询数据库,我假设您知道要查找哪些表。Netbeans创建所有。hbm和。自动为我们提供java文件。签出链接-http://netbeans.org/kb/docs/web/hibernate-webapp.html#05
# 4 楼答案
嗯,数据库中要与Hibernate一起使用的每个表都需要在应用程序端定义实体。您可以通过xml配置文件或使用注释(我强烈建议,它更“用户友好”)来定义该实体。所以基本上你需要维持一对一的关系