Pergunta

Na minha empresa, estamos desenvolvendo um aplicativo do tipo ERP usando Java e JSF, até agora a equipe de design identificou cerca de 20 entidades, cada uma com propriedades diferentes, geralmente estaremos construindo 20 páginas de Crud, existe alguma maneira melhor de fazer Isso?, estamos usando o Hibernate como acesso a banco de dados, então tivemos a idéia de um único DAO para esta parte do sistema, você já enfrentou uma situação semelhante? Quais são seus pensamentos sobre isso?

Foi útil?

Solução

Você pode considerar o CodeGenerating essas 20 telas, assim como o andaime em Ruby. No que diz respeito ao DAO, você pode atrair operações de CUD para algumas IbusinessObjectdao genéricas, deixando operações específicas de R (consulta por vários parâmetros) para implementações de concreto DAO.

Outras dicas

Você realmente deve olhar na costura. Tem um recurso chamado Costura-general Isso reverterá o engenheiro de todas as páginas do Application Crud do banco de dados. Você pode editar os modelos de geração de costura (que são baseados no Freemarker) para personalizar as páginas que serão geradas ao seu gosto.

Eu uso o plugin Eclipse Argila azzurri Para modelar meu banco de dados e gerar o DDL. Em seguida, eu corro a costura-general e, em alguns segundos, você tem um aplicativo em execução. É uma combinação muito útil.

Eu sei que é tarde, mas acho que minha pequena estrutura se encaixaria perfeitamente nessa situação. Verificação de saída http://code.google.com/p/happyfacescrud/ . Ele pesquisou fora da caixa, componentes personalizados que reconhecem o Datatype de entidade, o datamodel preguiçoso e a flexibilidade que os geradores de código não podem oferecer. Aqui está pouca amostra de como a página com datatable e pesquisa preguiçosos seriam:

    <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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top