Pregunta

en mi empresa estamos desarrollando una aplicación similar a ERP usando java y jsf, hasta ahora el equipo de diseño ha identificado alrededor de 20 entidades, cada una con diferentes propiedades, generalmente construiremos 20 páginas de CRUD, ¿hay algo mejor? ¿Cómo hacer esto ?, estamos usando hibernate como acceso db, así que se nos ocurrió la idea de un único DAO para esta parte del sistema, ¿te has enfrentado a una situación similar? ¿Qué piensas al respecto?

¿Fue útil?

Solución

Podría considerar generar código en esas 20 pantallas, al igual que los andamios en Ruby. En lo que respecta a DAO, puede llevar las operaciones CUD a algunos IBusinessObjectDao genéricos, dejando operaciones R específicas (consultas por diversos parámetros) a implementaciones DAO concretas.

Otros consejos

Realmente deberías mirar a Seam. Tiene una función llamada Seam-Gen que aplicará ingeniería inversa a todas las páginas CRUD de su aplicación desde la base de datos. Puede editar las plantillas de Seam-Gen (que se basan en Freemarker) para personalizar las páginas que se generarán a su gusto.

Utilizo el complemento Eclipse Azzurri Clay para modelar mi base de datos y generar el DDL Luego ejecuto Seam-Gen y en unos segundos tienes una aplicación en ejecución. Es una combinación muy útil.

Sé que es tarde, pero creo que mi pequeño marco encajaría perfectamente en esta situación. Consulte http://code.google.com/p/happyfacescrud/ . Tiene una búsqueda lista para usar, componentes personalizados que reconocen el tipo de datos de la entidad, el modelo de datos perezoso y la flexibilidad que los generadores de códigos no pueden ofrecer. Aquí hay una pequeña muestra de cómo se vería la página con tabla de datos perezosa y búsqueda:

    <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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top