Pull to refresh

Comments 15

Это не то же самое что Javers? https://javers.org/

Похоже)

Чорт, не знал про эту штуку.

Оказывается, велосипед или близко к этому... Печаль)

Но по крайней мере попытка интересная вышла. Да и, мб, функциональность местами все же будет различаться. Не знаком c Javers, пускай уж знатоки рассудят.

У меня была задача записывать аудит изменений в БД
Выбор был между Javers и Envers

Javers как-то резво развивался, плюс автор отвечал
Плюс поддержка монги

Выбрал его

Раз вы пользовались... как по вашему, отличается функциональность моего "велосипеда" от Javers? И в какую сторону, если есть отличия, в лучшую или худшую?)

Javers имеет 1.4k звёзд на гитхабе
И несколько лет развития

Согласитесь глупый вопрос

Это понятно, что масштабы несопоставимы. Это вообще полноценный фреймворк (а не написанная за неделю либа), как я понимаю, в котором куча вещей помимо чекинга изменений.

Но если только в разрезе функции проверки изменений и использования? Ограничиваясь чисто этим узким функционалом.

Понимаете, то что вы решили написать сами что-то своё.это вам плюс.
Но то что изобрели велосипед не промониторив мир, это минус

Например вы прочитали книгу старую книгу Beginning Java EE 7
И решите писать свое. DI

Согласитесь будет смешно.
Рядом гиганты spring, quarkus, micronaut
И куча light библиотек

Как нет проект , попробовать, я согласен, опыт
Но не для прода.

Тем более ушли времена надеюсь, когда для Джаспера ,мне приходилось подключать itext монстра)

Не, ну промониторить-то я пытался, только на глаза тот же Javers так и не попался) Видать, плохо упрашивал Гугл)

А так был искренне убежден, что делаю что-то новое, хоть и пока "на коленке") Эх, суровая реальность)

Cейчас хочу определиться с возможным дальнейшим планом развития. Может, есть все же что-то, какая-то важная мелочь/мелочи, которых не хватает в готовых решениях подобного плана (несмотря на их бОльший масштаб - порой у разрабов до мелочей не доходят руки, даже до важных :)) и которые у меня имеются/которые буду готов реализовать. Например, в том же Javers, видимо, для "дельты" по коллекциями какое-то время нельзя было получить старый и новый объекты (https://github.com/javers/javers/issues/1094). Что-то в этом роде.

Если их добавить - то как такая "light"-либа, думаю, будет вполне себе и даже в мавен централ залить будет не стыдно.

Вместо гугла, уже есть более современные средства поиска. Тот же чатгпт, сходу выдал несколько готовых решений:

  • Java Object Diff (https://github.com/SQiShER/java-object-diff)

  • Gson/JsonDiff

  • Javers

  • Apache Commons Lang (EqualsBuilder и DiffBuilder)

Помимо, собственно поиска, можно закинуть такому чату ваше решение и попросить его сравнить, найти отличия, составить отчёт/сводку.

Пока все руки не доходили до этого чуда)

Первое вроде видел, но мне как-то не очень понравилось. Второе, судя по всему, не совсем про Java-объекты. Про третье уже говорили, четвертое тоже выглядит интересно, нужно будет ознакомиться. Спасибо)

[мысли вслух] можно черезвычайно гибкие компараторы делать

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

Десять лет назад я создал очень похожий инструмент. Javers тогда уже существовал, но его версия была меньше чем 1.0.0, то есть не production ready.

Изначально назначение у инструмента было другое - обеспечение конкурентной работы.

Объект не сохранялся в БД напрямую. Вместо этого под распределенной блокировкой вычислялся дифф между исходной и измененной версией объекта, и далее дифф применялся к актуальной версии объекта, которая и сохранялась в БД. Сохранялись в БД и диффы, которые в дальнейшем можно было использовать при расследовании разного рода инцидентов, а так же для восстановления исторических версий объекта, которые могли быть нужны для разного рода миграций.

Таким образом, несколько юзеров могли одновременно отредактировать разные поля, одновременно сохранить объект, и ничьи изменения не терялись в результате гонки.

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

Спасибо) Интересная штука, как бы то ни было.

Наверное каждый разработчик в своей жизни пишет велосипед, а потом…хоба…и обнаруживает на рынке что-то готовое, намного функциональнее. У меня тоже так было. Писал в свое время для себя аналог Jooq или QueryDSL, но как потом оказалось эти инструменты уже существовали. Ну и ладно, сказал я себе. Зато хороший опыт написания фреймворка с нуля. Выбрал я, естественно, готовые решения

Sign up to leave a comment.

Articles