[Java/Spring/Hibernate] Many-to-many design

Pagina: 1
Acties:

  • Bbfreak
  • Registratie: September 2002
  • Laatst online: 04-02 10:03
Uitgangssituatie
Ik gebruik Spring MVC + Hibernate2 voor een webapplicatie.
Hierin heb ik een pc als object en een script object wat toegekend kan worden aan pc's.
Hiervoor heb ik een many-to-may gedefinieerd omdat ik vanuit beide kanten de informatie wil hebben.
Ik heb alleen bij het pc object de many-to-many gedefinieerd als volgt:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<hibernate-mapping>
    <class name="org.ymor.repman.model.PC" table="app_sentinel">
        <id name="id" column="id" unsaved-value="null">
            <generator class="increment"/>
        </id>
        <property name="hostName" column="host_name" not-null="true"/>
        <property name="IP" column="IP" not-null="true"/>
        <property name="location" column="location" not-null="true"/>
        <property name="owner" column="owner" not-null="true"/>
        <property name="lct" column="lct" type="java.util.Date"/>
        <property name="lcd" column="lcd" type="java.util.Date"/> 
         
        <bag name="scripts" table="app_scriptsentinel">
            <key column="pc_id"/>
            <many-to-many column="script_id" class="org.ymor.repman.model.Script"/>
        </bag>
    </class>
</hibernate-mapping>


In het PC object heb ik get en set scripts methodes gemaakt als volgt:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    /**
     * @return Returns the set of scripts.
     */
    public List<Script> getScripts() {
        return scripts;
    }
    
    /**
     * @param script Add script to set of scripts.
     */
    public void addScript(Script script) {
        getScripts().add(script);
    }

    /**
     * @param scripts The scripts to set.
     */
    public void setScripts(List<Script> scripts) {
        this.scripts = scripts;
    }


Het probleem
Als ik de applicatie start maakt hij de tabellen netjes aan. Goed dus.
Nu weet ik alleen niet hoe ik het vanuit de JSP moet aanpakken.
Als ik een lijst van pc's wil weergeven doe ik bijvoorbeeld:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public void setPCManager(PCManagerpcManager) {
        this.mgr = pcManager;
    }

    public ModelAndView handleRequest(HttpServletRequest request,
                             HttpServletResponse response)
    throws Exception {
        if (log.isDebugEnabled()) {
            log.debug("PCController: entering 'handleRequest' method...");
            log.debug("PCController: " + mgr.getPCs().size());
        }

        return new ModelAndView("pcList", "pcs", mgr.getPCs());
    }


De Manager:
Java:
1
2
3
4
5
6
    /**
     * @see PCManager#getPCs()
     */
    public List getPCs() {
        return dao.getPCs();
    }


De DAO Hibernate Impl:
Java:
1
2
3
4
5
6
7
    /**
     * @see PCDao#getPCs()
     */
    public List getPCs() {
        logger.debug("PCDAOHibernate.gePCs!");
        return getHibernateTemplate().find("from PC");
    }


Bij een FORM gebruik ik een FORM controller.
Hier wordt evt een formBackingObject gemaakt maar ik moet er nu dus 2 hebben.
Of maak ik hier een denkfout?

Nu weet ik dus niet hoe ik dit moet aanpakken als ik deze wil koppelen.
Er komt dus een pagina met een drop-down van zowel de pc als het script.
Moet ik dan in de controller 2 manager's definieren?
Wie kan me anders een goed voorbeeld van deze situatie geven?
Het is waarschijnlijk erg basic maar ik zie het nog niet en mijn Pro Spring en Hibernate in Action
boekjen zijn nog niet binnen.

P.S. srry voor de lap tekst.

Twitter @cmeerbeek / Halo Waypoint Profile