<meta attribute="implement-equals">true</meta> <meta attribute="generated-class">CountryBase</meta> <meta attribute="scope-field">protected</meta>
<id name="id" type="long" unsaved-value="null" > <column name="cn_id" not-null="true"/> <generator class="increment"/> </id>
<property column="cn_code" name="code" type="string"/> <property column="cn_name" name="name" type="string"/>
<set name="airports" > <key column="cn_id"/> <one-to-many class="Airport"/> </set> </class>
hbm2java生成CountryBase类,此类包含了所有在映射文件中描述的属性,getter,setter等。接着,你可以在Country的派生类中自由地添加业务逻辑,这些会被Hibernate使用并实例化,例如:
public class Country extends CountryBase { /** * Add an airport to this country */ public void addAirport(Airport airport) { airport.setCountry(this); if (getAirports() == null) { setAirports(new java.util.HashSet()); } getAirports().add(airport); } }
包装(Wrapper)或委派(Delegate)模式(Pattern)
对于更复杂的业务逻辑,你或许也想使用下列技术中的一种:
· 你可以定义“wrapper”或“delegate”类,这些类含有作为属性的Domain类,并且提供了指定域类额外的业务逻辑。 · 你可能更喜欢“服务(service)”或“外观(façade)”方法,“façade”对象(如无状态的会话EJB)提供了一套相关的业务服务来操作Domain对象。
结论
本文描述了我们用来管理Hibernate映射的一种方法, 这在我们所特定的环境中工作得很好。 当然,还有许多别的方法。或许本文会给你的项目提供一些想法,但无论你做什么, 总要使用最适合你项目的方法。 |