如何使用hibernate将这个复杂的对象持久化到数据库?

时间:2012-01-31 09:43:09

标签: java hibernate orm foreign-keys

后端的mysql中有数据库表,对应于这些类,并相应地定义了外键。如果我需要将这些关系放在这里,请告诉我。

class Itinerary {
 Airport Departure;
 Airport Arrival;
 Airline flight;
}

class Airport{
 int idAirport;
 String terminal;
 City city;
}

class City{
 int idCity;
 String name;
}    

class Airline{
 int idAirline;
 String flightNumber;
}

我使用这样的东西:http://pastebin.com/YzYMTBg3来构建一个行程对象。这让我感到困惑,我不知道使用hibernate作为我的ORM处理这个问题的好方法。


AirSegmentBuilder segmentBuilder = new AirSegmentBuilder();
segmentBuilder.addDepartureAirport("JFK");
segmentBuilder.addArrivalAirport("SFO");

我正在尝试将出发和到达机场(物品)添加到我的行程中。这些对象反过来在数据库中保存为:

机场:

id    |    name    | terminal
1     |    JFK     |  1
2     |    SFO     |  B1

因此,当我需要将这些机场添加到我的行程中时,是否需要首先使用基于名称的查询来获取机场对象?然后将这些物体附加到行程中?一旦我构建了行程对象并使用hibernate将其保存到数据库,它是否能够正确地获取外键?

1 个答案:

答案 0 :(得分:2)

假设您正在使用xml来配置您的hibernate内容。 你可以这样编写你的Itinerary.hbm.xml来实现你的目标:

<many-to-one name="Airport" class="pkg.Airport"
                column="foregn_key1" not-null="true" fetch="join" />
<many-to-one name="Airline" class="pkg.Airline"
                column="foregn_key2" not-null="true" fetch="join" />

其中机场,航空公司和行程是您数据库中的表格。 希望这会有所帮助...

注意 - 这只是一个例子。您可能需要相应地更新您的bean。