Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jsf处理多个CRUD的最佳策略_Java_Hibernate_Jsf_Crud - Fatal编程技术网

Java 使用jsf处理多个CRUD的最佳策略

Java 使用jsf处理多个CRUD的最佳策略,java,hibernate,jsf,crud,Java,Hibernate,Jsf,Crud,在我的公司,我们正在使用java和jsf开发一个类似ERP的应用程序,到目前为止,设计团队已经确定了大约20个实体,每个实体具有不同的属性,通常我们将构建20页的CRUD,有没有更好的方法呢?我们使用hibernate作为db访问,因此我们提出了为系统的这一部分使用单个DAO的想法,你有没有遇到过类似的情况?你有什么想法? < P>你可以考虑生成这20个屏幕,就像Ruby中的脚手架一样。就DAO而言,您可能会将CUD操作拉到一些通用的IBusinessObjectDao,将特定的R操作(通过各种

在我的公司,我们正在使用java和jsf开发一个类似ERP的应用程序,到目前为止,设计团队已经确定了大约20个实体,每个实体具有不同的属性,通常我们将构建20页的CRUD,有没有更好的方法呢?我们使用hibernate作为db访问,因此我们提出了为系统的这一部分使用单个DAO的想法,你有没有遇到过类似的情况?你有什么想法?

< P>你可以考虑生成这20个屏幕,就像Ruby中的脚手架一样。就DAO而言,您可能会将CUD操作拉到一些通用的IBusinessObjectDao,将特定的R操作(通过各种参数查询)留给具体的DAO实现。

您确实应该研究Seam。它有一个名为的特性,可以从数据库中对整个应用程序CRUD页面进行反向工程。您可以编辑Seam Gen模板(基于Freemarker)以自定义将生成的页面


我使用Eclipse插件对数据库建模并生成DDL。然后我运行Seam Gen,几秒钟后您就有了一个正在运行的应用程序。这是一个非常方便的组合。

我知道时间很晚了,但我认为我的小框架非常适合这种情况。退房它具有开箱即用的搜索、识别实体数据类型的自定义组件、惰性数据模型以及代码生成器无法提供的灵活性。下面是一个带有惰性datatable和搜索的页面的示例:

    <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>