В своем отображении вы определяете отношение между учеником и историей ученика как отношение 1: 1 или 1: n и определяете каскад для вставки / обновления. Для внешнего ключа для студента в таблице истории учащегося вы используете элемент <key>
(определяется в сопоставлении для учащегося).
Например (здесь отношение 1: n) вы делаете при отображении student :
<bag name="studentHistory" cascade="all" ... >
<key column="studentId" not-null="true">
</key>
<one-to-many class="com.xxx.StudentHistory"/>
</bag>
Затем, когда вы обновляете / вставляете экземпляр студента, внешний ключ в истории автоматически обрабатывается hibernate.