我想问一下我目前如何通过Hibernate在数据库中映射我的对象。这是问题陈述:
我有两个实体,User和Message。用户可以与许多消息相关联 用户由用户名唯一标识。所以主键是用户名。 消息由用户的用户名和另一个字段rxTime唯一标识。所以在这种情况下,它是一个复合键(用户名,rxTime)
以下是我目前通过XML进行映射的方法
<hibernate-mapping package="my.package">
<class name="User" table="USERS">
<id name="username" column="USERNAME_ID"> </id>
<set name="messages" table="MESSAGES"
inverse="true" lazy="false" fetch="select">
<key>
<column name="USERNAME_ID" not-null="true" />
</key>
<one-to-many class="Message" />
</set>
</class>
</hibernate-mapping>
<hibernate-mapping package="my.package">
<class name="Message" table="MESSAGES">
<composite-id >
<key-many-to-one name="user" class="User" column="USERNAME_ID"/>
<key-property name="startRxTime" column="startRxTime"/>
</composite-id>
</class>
</hibernate-mapping>
问题: - 我做得对吗?我是hibernate的新手,我不确定这是做一对多关联的正确方法。 - 查询数据库时遇到一些性能问题。当我尝试通过RxTime获取消息列表时,我看到许多查询都是由hibernate生成的,以获得结果。这将是接下来要调查的事情,但我担心我映射对象的方式导致这种低效率。是不是?
我知道这看起来像是一个简单的数据库设计,但在网络上我找到了很多不同的方法来做到这一点,我不清楚哪个是最好的。
非常感谢您最终的回复。
干杯