为现有数据库开发Java CRUD的最佳框架是什么?

时间:2010-06-06 15:11:07

标签: java frameworks crud

我们有一个Java应用程序,在数据库(Oracle)上有许多配置表。我们希望有基于Web的GUI来设置这些表,我们目前通过SQL查询更新这些表。为数据库的子集开发CRUD的最简单方法是什么?这样做有没有基于Java的框架?

6 个答案:

答案 0 :(得分:8)

恕我直言,有一个很好的解决方案来管理应用程序数据,而无需编写任何额外的代码

LightAdmin是一个可插拔的Java库,用于Spring / JPA支持的应用程序,它通过干净简单的UI提供标准的CRUD功能,过滤,JSR-303验证。 它提供用于界面定制的DSL,您可以随时从应用程序中插入/拔出它。

以下是DSL配置自定义的一个小例子:

@Administration( Booking.class )
public class BookingAdministration {

public static ScopesConfigurationUnit scopes( final ScopesConfigurationUnitBuilder scopeBuilder ) {
    return scopeBuilder
        .scope( "All", all() )
        .scope( "Smoking Apartments", specification( smokingApartmentsSpec( true ) ) )
        .scope( "Non Smoking Apartments", specification( smokingApartmentsSpec( false ) ) )
        .scope( "Long-term bookings", filter( longTermBookingPredicate() ) ).defaultScope().build();
}

public static FiltersConfigurationUnit filters( final FiltersConfigurationUnitBuilder filterBuilder ) {
    return filterBuilder
        .filter( "Customer", "user" )
        .filter( "Booked Hotel", "hotel" )
        .filter( "Check-In Date", "checkinDate" ).build();
}

public static FieldSetConfigurationUnit listView( final FieldSetConfigurationUnitBuilder fragmentBuilder ) {
    return fragmentBuilder
        .field( "user" ).caption( "Customer" )
        .field( "hotel" ).caption( "Hotel" )
        .field( "checkinDate" ).caption( "Check-In Date" )
        .field( "smoking" ).caption( "Smoking" )
        .field( "beds" ).caption( "Beds" )
        .build();
}

public static DomainTypePredicate longTermBookingPredicate() {
    return new DomainTypePredicate() {
        @Override
        public boolean apply( final Booking booking ) {
            return booking.getNights() > 20;
        }
    };
}

public static DomainTypeSpecification smokingApartmentsSpec( final boolean isSmokingApartment ) {
    return new DomainTypeSpecification() {
        @Override
        public Predicate toPredicate( final Root root, final CriteriaQuery<?> query, final CriteriaBuilder cb ) {
            return cb.equal( root.get( "smoking" ), isSmokingApartment );
        }
    };
}

}

答案 1 :(得分:6)

Telosys工具http://www.telosys.org/)专为此类工作而设计。

它使用现有数据库生成源代码(通常是CRUD屏幕)  如有必要,可以自定义模板

尝试它的最佳方法是遵循教程:https://sites.google.com/site/telosystutorial/
(有一个Spring MVC / Spring Data / JPA的堆栈)

另请参阅:http://marketplace.eclipse.org/content/telosys-tools

答案 2 :(得分:3)

Grails 基本“Java on Rails”,脚手架的行为完全符合您的预期。

答案 3 :(得分:0)

我认为使用ORM工具可以更轻松地生成CRUD。关于Java ORMs的SO最近有一个问题 - Hibernate得到的票数最多(尽管不使用ORM排名相当高!)。

答案 4 :(得分:0)

reinCRUD是一个vaadin加载项,使用带注释的hibernate实体。您可以在几分钟内创建CRUD应用程序,并且可以重复使用列表,表单和搜索表单等组件。在我们的例子中,您可以使用数据库建模工具(例如hibernate tools)生成Hibernate实体,然后在其上放置reinCRUD注释。

答案 5 :(得分:0)

根据您现有的数据库设计,您可以考虑Apache Isis

Apache Isis最适合运行整个应用程序,因此仅管理数据集的某些部分可能有点过分。

但对于其他寻求整体解决方案的人来说 - 使用基于Web的GUI(Wicket和2个自定义HTML版本),完整的数据库后端支持(现在支持JDO)和POJO的运行时内省(Isis不是代码生成器),也许这对你有用。

Apache Isis SQL对象存储(使用JDBC)可以配置为将现有表映射到类和表列到类属性(可以覆盖属性文件中自动分配的名称)。

对于较大的项目,也许JDO数据存储更合适,并配置了注释。

我是Apache Isis PMC的贡献者和成员 - 特别关注SQL对象库。