2012-01-31 74 views
0

在后端对应于这些类的mysql中有数据库表,相应地定义了外键。让我知道如果我需要把这些关系放在这里。如何使用hibernate将这个复杂的对象持久化到数据库?

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 

所以,当我需要这些机场添加到我的行程,我需要先获取机场对象使用基于名称的查询? ;然后将这些对象附加到行程?一旦建立了行程对象并使用休眠功能将其保存到数据库中,它是否能够正确地获取外键?

回答

2

假设您使用xml来配置您的休眠的东西。 你可以写你的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" /> 

哪里机场,航空公司和行程都在你的数据库中的表。 希望这有助于...

注 - 这只是一种示例。您可能需要相应地更新您的豆子。

相关问题