Какова лучшая платформа для разработки Java CRUD для существующей базы данных? - PullRequest
7 голосов
/ 06 июня 2010

У нас есть приложение Java с множеством таблиц конфигурации в базе данных (Oracle). Нам бы хотелось иметь веб-интерфейс для настройки этих таблиц, который мы в настоящее время обновляем с помощью SQL-запросов. Каков самый простой способ разработки CRUD для подмножества нашей базы данных? Есть ли какая-либо основанная на Java инфраструктура для этого?

Ответы [ 6 ]

8 голосов
/ 14 июля 2013

ИМХО, есть довольно хорошее решение для управления данными приложения без необходимости писать какой-либо дополнительный код .

LightAdmin - это подключаемая библиотека Java для приложений, поддерживаемых Spring / JPA, которая обеспечивает стандартную функциональность 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 );
        }
    };
}

}
6 голосов
/ 14 апреля 2014

Telosys Tools (http://www.telosys.org/) был разработан для этой работы.

Он использует существующую базу данных для генерации исходного кода (обычно экраны CRUD) И при необходимости можно настроить шаблоны

Лучший способ попробовать это - следовать руководству: https://sites.google.com/site/telosystutorial/
(есть стек для Spring MVC / Spring Data / JPA)

Смотри также: http://marketplace.eclipse.org/content/telosys-tools

3 голосов
/ 06 июня 2010

Grails - это в основном"Java on Rails", и леса работают точно так, как вы ожидаете.

0 голосов
/ 03 февраля 2013

В зависимости от существующего дизайна базы данных, вы можете рассмотреть Apache Isis .

Apache Isis лучше всего подходит для запуска всего вашего приложения, поэтому, возможно, излишне просто управлять частями вашего набора данных.

Но для всех, кто ищет комплексное решение - с веб-интерфейсом (Wicket и 2 пользовательских HTML-версии), полной внутренней поддержкой базы данных (теперь с поддержкой JDO) и самоанализом во время выполнения ваших POJO (Isis не является генератор кода), возможно, это может сработать для вас.

Хранилище объектов Apache Isis SQL (которое использует JDBC) можно настроить для сопоставления существующих таблиц вашим классам и столбцам таблицы с вашими свойствами класса (вы можете переопределить автоматически назначенные имена в файлах свойств).

Для более крупных проектов, возможно, более подходящим является хранилище данных JDO, в котором настроены аннотации.

Я участник и член Apache Isis PMC - с особым вниманием к хранилищу объектов SQL.

0 голосов
/ 21 января 2011

reinCRUD - это дополнение vaadin , которое работает с использованием аннотированных спящих объектов. Вы можете создать приложение CRUD в течение нескольких минут и повторно использовать такие компоненты, как списки, формы и формы поиска. В нашем случае вы можете использовать инструмент моделирования БД (например, инструменты гибернации ) для создания объектов Hibernate, а затем размещать на них аннотации для reinCRUD.

0 голосов
/ 06 июня 2010

Я думаю, что использование инструмента ORM облегчает генерацию CRUD. Недавно был задан вопрос о SO, касающийся Java ORMs , в результате которого Hibernate получил большинство голосов (хотя и не использовал ORM, оцененный как достаточно высокий!)

...