Я планирую перейти с PHP на Java, создавая управляемые данными веб-приложения. Я, очевидно, хочу, чтобы слой обрабатывал постоянные данные. В PHP с Doctrine (1.x) через один интерфейс можно выполнить следующие действия (PHP ArrayAccess):
- Представление структур данных в коде
- Получение структурированных данных из базы данных через доктрину
- Представление структурированных данных в форме HTML
Поэтому очень важно, чтобы у меня был слой для таких форм, как:
$properties = array (
"minlength" => 2,
"maxlength" => 30,
);
new TextInput ("name", $properties);
... который не обращает внимания на основную механику. Он может загружать и сохранять (возможно структурированные) данные из всех вышеперечисленных источников через один интерфейс.
При сохранении данных в записи он не может вызвать setName($value)
. Можно только позвонить set("name", $value)
. (Конечно, это можно сделать с помощью размышлений, но я надеюсь, что мне не нужно уточнять, почему это плохая идея).
Так есть ли в Java ORM, который:
- Реализует собственные интерфейсы коллекции.
java.util.Map
например.
- Отображает отношения БД в виде коллекций, таких как
author.get("books").put(newBook)
- Имеет правильные триггеры для реализации сложной логики (например, разрешения или внешние файлы, прикрепленные к полям).