Hibernate version:3.1
Hallo,
ich habe folgendes Problem:
Meine Aufgabe liegt darin, das O/R Mappingframework Hibernate auf Performanzengpässe hin zu überprüfen und möglichst effizient einzusetzen. Dabei habe ich (erfolglos) versucht, das Datenbankschema zu denormalisieren, um eine Performanzsteigerung zu erhalten. Konkret sieht das so aus:
Im Objektmodell habe ich ein User, ein Course und ein Assessmentobjekt.
Das Assessmentobjekt verfügt über eine Referenz auf ein Courseobjekt. Ein Courseobjekt kann mehrere Assessmentobjekte über ein Set referenzieren, des Weiteren ist in Course ein Verweis auf das Userobjekt enthalten.
Jetzt stellt sich mir die Frage, ob ich ein Datenbankschema mappen kann, welches in der Tabelle für Assessments eine zusätzliche Spalte mit einem Fremdschlüssel für User hat, ohne dass es diese Assoziation im Objektmodell gibt. (Assessment hat KEINE Referenz zu einem Userobjekt).
Der Grund hierfür wäre eine Optimierung der Anfrage, den User zu finden, der (indem er einen Course angelegt hat) ein bestimmtes Assessment kreiert hat.
Ist so etwas überhaupt möglich?
Mein Mapping sieht im Moment so aus:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class
name="User"
table="users"
>
<id
name="login"
column="login"
type="java.lang.String"
length="64"
>
<generator class="assigned">
</generator>
</id>
</class>
</hibernate-mapping>
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
>
<class
name="Course"
table="courses"
>
<id
name="id"
column="id"
type="java.lang.Long"
>
<generator class="native">
</generator>
</id>
<set
name="assessments"
lazy="true"
inverse="true"
cascade="all"
sort="unsorted"
>
<key
column="course"
>
</key>
<one-to-many
class="Assessment"
/>
</set>
<many-to-one
name="user"
class="User"
cascade="none"
outer-join="auto"
update="true"
insert="true"
column="user"
/>
</class>
</hibernate-mapping>
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
>
<class
name="Assessment"
table="assessments"
>
<id
name="id"
column="id"
type="java.lang.Long"
>
<generator class="native">
</generator>
</id>
<many-to-one
name="course"
class="Course"
cascade="none"
outer-join="auto"
update="true"
insert="true"
column="course"
/>
</class>
</hibernate-mapping>
Für Hilfe oder sonstige Anregungen wäre ich sehr dankbar
Gruß Uli