Domanda

nella mia azienda stiamo sviluppando un'app simile a ERP usando java e jsf, finora il team di progettazione ha identificato circa 20 entità, ognuna con proprietà diverse, di solito costruiremo 20 pagine di CRUD, c'è di meglio modo di fare questo ?, stiamo usando l'ibernazione come accesso db, quindi abbiamo avuto l'idea di un singolo DAO per questa parte del sistema, hai affrontato una situazione simile? cosa ne pensi?

È stato utile?

Soluzione

Potresti considerare la codegenerazione di quei 20 schermi, proprio come fanno le impalcature in Ruby. Per quanto riguarda DAO, è possibile eseguire operazioni CUD su alcuni IBusinessObjectDao generici, lasciando operazioni R specifiche (interrogazione con vari parametri) su implementazioni DAO concrete.

Altri suggerimenti

Dovresti davvero esaminare Seam. Ha una funzione chiamata Seam-Gen che eseguirà il reverse engineering di tutte le pagine CRUD dell'applicazione dal database. È possibile modificare i modelli Seam-Gen (basati su Freemarker) per personalizzare le pagine che verranno generate a proprio piacimento.

Uso il plug-in Eclipse Azzurri Clay per modellare il mio database e generare il DDL. Quindi eseguo Seam-Gen e in pochi secondi hai un'applicazione in esecuzione. È una combinazione molto utile.

So che è tardi, ma penso che il mio piccolo quadro si adatterebbe perfettamente a questa situazione. Scopri http://code.google.com/p/happyfacescrud/ . Ha una ricerca pronta per l'uso, componenti personalizzati che riconoscono il tipo di dati dell'entità, il modello di dati pigro e la flessibilità che i generatori di codice non possono offrire. Ecco un piccolo esempio di come apparirebbe una pagina con dati pigri e ricerca:

    <hf:searchPanel columns="4" backingBean="#{accountBean}">
        <hf:searchField label="#{messages['account.accountNumber']}" field="accountNumber" />
        <hf:searchField label="#{messages['account.active']}" field="active" isMessage="true" />
        <hf:searchEntityField label="#{messages['account.customer']}" field="customer" childField="name" popup="true" />
        <hf:searchField label="#{messages['account.openingDate']}" field="openingDate" rangeSearch="false" />
    </hf:searchPanel>
    <hf:dataList label="#{messages['account.search.results']}" backingBean="#{accountBean}">
        <hf:column label="#{messages['account.accountNumber']}" field="accountNumber" />
        <hf:column label="#{messages['account.active']}" field="active" isMessage="true" />
        <hf:column label="#{messages['account.customer']}" field="customer" childField="name" entityView="/pages/customerEdit.xhtml" popupFields="email,phone,address" />
        <hf:column label="#{messages['account.openingDate']}" field="openingDate" isDate="true" />
        <hf:actionsColumn />
    </hf:dataList>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top