У нас есть приложение Java с большим количеством таблиц конфигурации в базе данных (Oracle). Мы хотели бы иметь веб-интерфейсы GUI для настройки этих таблиц, которые мы в настоящее время обновляем с помощью SQL-запросов. Каков самый простой способ разработки CRUD для подмножества нашей базы данных? Есть ли какая-либо Java-платформа для этого?Какова лучшая структура для разработки Java CRUD для существующей базы данных?
ответ
Я думаю, что использование инструмента ORM упрощает создание CRUD. Недавний вопрос о SO относительно Java ORMs - который вышел с Hibernate, получившим наибольшее количество голосов (хотя использование ORM не было достаточно высоким!).
reinCRUD - это дополнение, которое работает с использованием аннотированных объектов спящего режима. Вы можете создать приложение CRUD в течение нескольких минут, и вы можете повторно использовать такие компоненты, как списки, формы и формы поиска. В нашем случае вы можете использовать инструмент моделирования БД (например, hibernate tools), чтобы сгенерировать объекты спящего режима, а затем разместить для них аннотации для reinCRUD.
В зависимости от существующего дизайна базы данных вы можете рассмотреть Apache Isis.
Apache Isis лучше всего подходит для работы со всем вашим приложением, поэтому, возможно, это слишком просто для управления частями вашего набора данных.
Для тех, кто ищет полное решение - с помощью веб-графических интерфейсов (Wicket и 2 пользовательских HTML-версий), полная поддержка базы данных (теперь с поддержкой JDO) и интроспекция ваших POJO в режиме реального времени (Isis is not генератор кода), возможно, это может сработать для вас.
Хранилище объектов Apache Isis SQL (которое использует JDBC) можно настроить для сопоставления существующих таблиц с вашими классами и столбцами таблицы с вашими свойствами класса (вы можете переопределить автоматически назначенные имена в файлах свойств).
Для больших проектов, возможно, хранилище данных JDO более подходит и сконфигурировано с аннотациями.
Я являюсь автором и членом Apache Isis PMC - с особым акцентом на хранилище объектов SQL.
ИМХО хороший инструмент, но очень неудачное имя. :) –
ИМХО, существует неплохое решение для управления данными приложения без необходимости писать дополнительный код.
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);
}
};
}
}
Хорошо, если CRUD является «приятным для вас» или если он «для вас». Он не поддерживает большую настройку с точки зрения интерфейса и, наконец, я слышал, что он не поддерживает интернационализацию. – Cenobyte321
Telosys Инструменты (http://www.telosys.org/) был дизайн для такого рода работы.
Он использует существующую базу данных для генерации исходного кода (обычно CRUD экранов) И это можно настроить шаблоны, если необходимые
Лучшим способом попробовать это следовать учебнику: https://sites.google.com/site/telosystutorial/
(есть стек для Spring MVC/Spring Data/JPA)
Смотрите также: http://marketplace.eclipse.org/content/telosys-tools
возможно дубликат [? есть ли утилита CRUD генератор в Java (любые рамки), как Строительные леса в Rails] (HTTP: // StackOverflow. с om/questions/414583/is-there-a-crud-generator-utility-in-javaany-framework-like-scaffolding-in-rail) –