LINUX.ORG.RU

Поиск оригинальной ORM для java

 ,


0

2

Есть в природе ОРМ, которые мапят сущности не на классы а на хешмапы, например? Очень хочется в динамике переконфигурять БД без перегенерации классов. Но чтобы не маяться ручной конвертацией типов.

upd: плюсом будет генерация/обновление бд по схеме.

★★★★★

Последнее исправление: ya-betmen (всего исправлений: 2)

Анон прав. ColumnMapRowMapper+JdbcTemplate - это то что тебе нужно.

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

Если устроят маппинги через Java, то хибернейт тебе почти подойдет. CodeFirst называется.

Описываешь модель в виде entity, и используешь generate ddl.

Для выборок в map, юзаеш setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP) на запросе.

Но помни, generate ddl в продакшене - прямой путь к приключениям

anonymous
()
Ответ на: комментарий от anonymous

Но помни, generate ddl в продакшене - прямой путь к приключениям

Я бы немножко перефразировал: хибернейт в продакшене - прямой путь к приключениям.

f1xmAn ★★★★★
()
Ответ на: комментарий от f1xmAn

Я не фанат хибернейта, но он у нас в проде и сам по себе проблем не вызывает. Прописывать мэппинги и всё это то ещё развлечение конечно.

roy ★★★★★
()
Ответ на: комментарий от anonymous

задумайся как ты будеш описывать схему.

АА вот я то хотел чтобы авторы ОРМ об этом уже подумали. Мне хотелось бы чтобы оно нормально схему могло генерить в динамике ну и перестраивать её тоже в динамике.

Описываешь модель в виде entity, и используешь generate ddl.

Я как раз ищу такой ОРМ где нету ентитей. С ентитями каждый дурак может.

ya-betmen ★★★★★
() автор топика

Про «микро-типа-ORM» для небольших приложений

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jdb...

все тут правильно сказали для небольших приложений.

Однако, для нагруженных приложений - минимум EHcache нужен, а для нагруженных «по чтению» - Swarm.

А не HashTable как 2nd level cache.

(Кэшей 2-го уровня есть много на все случаи жизни - OSCache, JBoss Cache 1 & 2.)

https://habrahabr.ru/post/135176/

Так, что «голый» JDBC в Spring - «It's up to you», но только для некоммерческих приложений.

Bioreactor ★★★★★
()

а на хешмапы, например

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

если так то mybatis и вот тут что-то похожее обсуждали: java orm которые тоньше самого тонкого тролля

Deleted
()

Смотри Apache Cayenne. Его sql templates на velocity - очень вкусная плюшка. Местами куда приятнее того же MyBatis.

http://cayenne.apache.org/

bytecode ★★
()
Последнее исправление: bytecode (всего исправлений: 1)
Ответ на: комментарий от Bioreactor

Про «микро-типа-ORM» для небольших приложений

Похоже я не очень ясно описал, мне нужно как бы полноценное ОРМ по типу хибернейта или ЖПА, но с небольшой разницей, чтобы файл схемы БД можно было поднимать и обновлять на ходу, а маппинг данных шёл не на поля объектов, а в массивы/таблицы/контейнеры, откуда их можно было бы вытащить по именам. И при этом хочется чтобы всё остальное ЖТА, кеш и желательно валидация запросов тоже были.

Т.е. я могу и самостоятельно наклепать маппер на массивы, но тогда и транзакции и кеши и прочии плюшки мне придётся делать руками, а это уже будет долго и глючно. Но вот есть сильное желание менять структуру БД после запуска приложения.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от ya-betmen

Вообще, тебе нужен не ORM, т.к. Объекты (первая буква в ORM) тебе не нужны.

JdbcTemplate - для запросов http://flywaydb.org/ - миграция БД по sql скриптам http://www.liquibase.org/ - генерация скриптов для миграции по xml модели

Из этих трех вещей ты можешь собрать всё нужное. За тебя такое никто не соберет в один блоб.

Но я акцентирую внимание на том, что это годится только для разработки. Автомиграция на продакшене - верный путь в мир побитых баз данных

anonymous
()
Ответ на: комментарий от anonymous

Вообще, тебе нужен не ORM

Вообще мне нужен именно ОРМ, только с маппингом на массивы. У ОРМ есть куча других плюшек кроме маппинга.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от roy

А я вот помню как недавно искал проблему неожиданно переполненного стека во время генерации запроса на продакшене. Или NPE (к счастью, выявленного во время тестирования), опять же во время построения запроса. Или когда хибернейт у нас начал выжирать весь процессор во время построения графа объектов. Особенно я люблю его запросы

select columnName1 as columnName_23_54, columnName2 as columnName_66_28... 

Проблем у него масса и я настоятельно не рекомендую использовать этот монструозный кусок говна в новых проектах.

f1xmAn ★★★★★
()
Ответ на: комментарий от Bioreactor

Как раз сейчас смотрю mybatis, кажется в нём проще всего делать то что мне нужно.

Проблема тут даже не в легкости а в том что я хочу странного. И я это в общем то понимаю, но куда ж деваться.

ya-betmen ★★★★★
() автор топика
Последнее исправление: ya-betmen (всего исправлений: 1)
Ответ на: комментарий от ya-betmen

Если возможностей MyBatis-а хватит, то лучше взять его. Использовал на двух проектах, понравился.

roy ★★★★★
()
Ответ на: комментарий от roy

Если честно, то я пока хз хватит или нет. Но ничего более подходящего пока не нашел.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от roy

Ну, как минимум с одной из перечисленных задач он может справляться херово.

f1xmAn ★★★★★
()

ОРМ, которые мапят сущности не на классы а на хешмапы

Может быть тебя заинтерисует мысль притащить в проект какой-нибудь динамический ЖВМ язычок - Clojure например. Там так обычно и делается.

Debasher ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.