Я размышляю о том, что произошло в стандарте ISO / IEC SQL за последние 15 лет. У нас было довольно много новых функций, добавленных к нашему любимому языку SQL. Проверь это:
- Со стандартом ISO / IEC SQL: 1999 мы могли бы использовать преимущества группирования наборов и (рекурсивных) общих табличных выражений.
- Благодаря стандарту ISO / IEC SQL: 2003 у нас были очень сложные оконные функции и оператор MERGE .
- С помощью стандарта ISO / IEC SQL: 2008 мы могли бы выполнять многораздельные соединения .
- Благодаря стандарту ISO / IEC SQL: 2011 мы теперь можем взаимодействовать с временными базами данных (реализованными до сих пор в IBM DB2 и Oracle).
И очевидно, что в почти нечитаемых документах длиной в 1423 страницы скрывается гораздо больше добра.
Но JPA …
Теперь, какие-либо из этих удивительных функций появляются в JPA? Нет. Будет ли следующий стандарт SQL вводить новые удивительные функции? Я уверен, что так и будет! Я мог бы представить, что предложения Oracle / CUBRID CONNECT BY или предложения Oracle / SQL Server PIVOT / UNPIVOT являются хорошими кандидатами для стандартизации. Я бы просто сошел с ума, если бы сумасшедшее предложение Oracle MODEL сделало бы это тоже
В то время как на этих концах происходят захватывающие вещи, несоответствие импеданса ORM еще больше углубит и подтвердит недавние выводы Чарльза Хамбла из QCon , где он наблюдал растущее число людей, которые недовольны постоянно растущей сложностью популярных ORM. Пример сложности: NamedEntityGraph !
@NamedEntityGraph( name="ExecutiveProjects", attributeNodes={ @NamedAttributeNode("address"), @NamedAttributeNode( value="projects", subgraph="projects" ) }, subgraphs={ @NamedSubgraph( name="projects", attributeNodes={ @NamedAttributeNode("properties") } ), @NamedSubgraph( name="projects", type=LargeProject.class, attributeNodes={ @NamedAttributeNode("executive") } ) } )
Чувак, это действительно нужно добавить в JPA? Переполнение стека не может отображать столько аннотаций на одном экране! Что ж, если это ответ JEE на недавние изменения SQL, то я рад, что я не слишком много делаю в эти дни. Я делаю SQL, который является отличным языком, если позволить работать свободно.