🧠 Зачем использовать @Transactional(readOnly = true)?Многие добавляют @Transactional(readOnly = true) на сервисные методы просто по привычке. Но давайте разберёмся, что на самом деле даёт этот флаг, и где он реально ускоряет выполнение.📌 Что делает readOnly = true?* Подсказывает JPA провайдеру (например, Hibernate), что изменения в сущностях можно не отслеживать (skip dirty checking).* В некоторых БД может выставить read-only transaction flag, который предотвращает нежелательные изменения (например, в PostgreSQL).* Может ускорить выборки, особенно при больших графах сущностей.💡 Пример:@Service@RequiredArgsConstructorpublic class UserService { private final UserRepository userRepository; @Transactional(readOnly = true) public UserDto getUser(Long id) { User user = userRepository.findById(id) .orElseThrow(() -> new EntityNotFoundException("User not found")); return UserDto.from(user); }}⚠️ Важно:* readOnly = true не блокирует изменения в БД, если вы явно вызываете save() — это НЕ защита от дурака.* Hibernate всё равно создаст транзакцию — это не аннотация "без транзакций".✅ Когда использовать:* Методы, которые только читают данные и не модифицируют сущности.* Большие выборки без нужды в lazy-инициализации через сессию.* Там, где критична производительность чтения.❌ Когда НЕ нужно:* Если вы всё равно модифицируете сущности внутри метода.* Если работаете с @Modifying запросами — Spring их игнорирует при readOnly = true.📎 Документация Spring @Transactional👉 @java_geek
Java Geek
@java_geek · 2.5K подписчиков
Посты канала Java Geek в SillyFeed: единая лента публичных Telegram-каналов со ссылками на оригиналы.
Практичные советы, лайфхаки и код для Java-разработчиков. Каждый пост — реальная польза. Учим Java на примерах.По всем вопросам@evgenycarter
Посты канала
Почему метод clone объявлен как protected?Метод clone() по умолчанию объявлен как protected, чтобы ограничить возможность клонирования объектов. Если бы метод был public, то любой код мог бы клонировать объекты класса. А это не всегда желательно по соображениям безопасности и корректности программы.С protected доступом клонирование разрешено только внутри класса и его наследников. Таким образом разработчик класса может сам решить, будет ли класс поддерживать клонирование и как именно оно будет реализовано в методе clone().Делая клонирование protected по умолчанию, Java принуждает разработчика сознательно разрешить клонирование класса путем переопределения метода clone() как public в самом классе. Это позволяет более гибко контролировать возможности клонирования в каждом конкретном классе.👉 @java_geek
Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable?Метод clone() объявлен в классе Object с указанием модификатора native, чтобы обеспечить доступ к стандартному механизму поверхностного копирования объектов. Одновременно он объявлен и как protected, чтобы нельзя было вызвать этот метод у не переопределивших его объектов. Непосредственно интерфейс Cloneable является маркерным (не содержит объявлений методов) и нужен только для обозначения самого факта, что данный объект готов к тому, чтобы быть клонированным. Вызов переопределённого метода clone() у не Cloneable объекта вызовет выбрасывание CloneNotSupportedException.👉 @java_geek
Ещё по теме «Технологии»
ТехнологииСегодня я была приглашенным спикером в клубе Digital Generation. Тема, мягко говоря, была с вызовом: «ИИ и человеческие желания: культура, нравственность и сексуальность как маркеры доверия 2026 год». В зале - представители фарм-индустрии: топы, бренд-менеджеры, CEO. Вот уж где моя уязвимость раскрылась по-полной. Но пришлась как нельзя кстати, потому что в эпоху всего идеального, друзья мои, любую шероховатость, оплошность, неточность, сумятица можно смело позиционировать как тренд. Потому что все это присуще живому существу, а мы в дичайшем запросе на доказательства подлинности буквально всего, заметили? Этот текст я, конечно, пишу сама. Ибо ни один DEEPSEEK и иже с ними мой шутливый настрой ПОКА (и это ключевое слово) не передаст. Но очень скоро…И тут вопрос. Я пока готовилась к выступлению, начитывала материал, структурировала, искала закономерности, вот, что поняла. Советский филосом Мераб Мамардашвили говорил: «Человек - это усилие быть человеком». ИИ сейчас это усилие у нас повсеместно забирает. Не дает нам в целом пожить в вопросе, пострадать в познании и пр. Так вот. Самое большое усилие, которое мы ДОЛЖНЫ применять к себе сейчас - это не лезть в GPT по любому поводу, отложить телефон, открыть книгу, пойти в библиотеку, заказать подборку книг, подискутировать с друзьями. НАСИЛЬНО погрузить себя в этот ВОПРОС.В противном случае, если из формулы «человек - это усилие быть человеком» убрать это самое усилие, то что останется? И это уже не праздный вопрос, это вопрос экзистенциальный, друзья мои…
Это я с таким видом смотрю на то, как сейчас все поголовно продвигают АИ агентов, подключая их бездумно ко всему, забывая про безопасность в этих ваших интернетах. И на тех, кто думает, что АИшка может полностью заменить разработчиков, написание работающего годами ПРОДУКТА. Я училась на инновациях, поэтому знаю неплохо про циклы адаптации инновационных продуктов, но сейчас творится просто хаос. Люди реально пытаются сделать все, чтобы не работать, головой: бездумно используют сервисы, не проверяют инфу, доверяют сгруппированной с разных источников информации. Люблю АИ всем сердцем, это упрощает жизнь сильно, но мозги никто не отменял
🇬🇧 Двигатель Rolls Royce впервые отработал полный полётный цикл на чистом водородеБританские инженеры совместно с авиакомпанией easyJet успешно испытали реактивный авиадвигатель Pearl 15, работающий исключительно на водороде. Масштабные наземные проверки прошли на территории испытательного комплекса NASA в штате Миссисипи.Сымитировав полный рабочий цикл от запуска до выхода на максимальную взлётную мощность и последующей посадки, специалисты на практике доказали способность современной турбины стабильно функционировать на газообразном экологичном топливе. Полученные в ходе этих экстремальных проверок данные о поведении водорода в камере сгорания планируют напрямую использовать при создании мощных моторов серии UltraFan, разрабатываемых для следующего поколения пассажирских лайнеров.Массовый переход коммерческой авиации на новый вид горючего всё ещё требует решения множества сложных логистических проблем, связанных с безопасным хранением газа и глубокой перестройкой всей аэродромной инфраструктуры. Тем не менее текущие результаты закладывают прочный технологический фундамент для постепенного отказа индустрии от классического авиационного керосина.🔼 Аэротетраэдр | #инновации
🧠Обожаю изучать всё новое. Мозг, как говорится, остаётся пластичным в любом возрасте, но именно новизна прокачивает его сильнее всего.🎒В сентябре Ника идёт в немецкую школу. За её академические способности я совершенно не переживаю — на тесте школьной готовности ей даже аплодировали и говорили «браво» очень милые немецкие педагоги. Но… я всё же волнуюсь за её адаптацию в новой языковой среде.📚Конечно, она много занимается: и с репетитором, и в группе, и в приложениях, и по карточкам… Но сегодня я придумала кое-что новенькое и интересное. 💡Делюсь — возможно, вам тоже пригодится.🤖С помощью ChatGPT я буквально за полчаса сделала персонализированное приложение для запоминания слов с флеш-карточками. В нём есть всё: уровни, награды, и даже приветствие «Hello, Ника», когда начинаешь заниматься… Просто чудеса современности.✨Ника в восторге, я в восторге… Кто бы мне сказал, что в 40 лет, работая только в медицине, я смогу делать обучающие компьютерные игры для детей — ни за что бы не поверила.💬А как у вас обстоят дела с нейросетями?#нейросети #обучение #материнство #немецкийязык #chatgpt #развитие
PAD3R: Реконструкция динамических 3D-объектов из монокулярных видеоPAD3R (Pose-Aware Dynamic 3D Reconstruction from Casual Videos) — это передовой исследовательский инструмент, позволяющий создавать высокоточные 4D-реконструкции деформируемых 3D-объектов из обычных монокулярных видео, снятых в повседневных условиях. Разработанный для конференции ACM SIGGRAPH Asia 2025, этот метод (написанный на языке Python) одновременно моделирует сложную артикулированную деформацию объекта и траекторию движения камеры, не требуя предварительной информации о позиционировании съемки (unposed videos).Основные возможности- Оценка положения объектов (Pose-Aware): Обучает персонализированную модель оценки позы, ориентированную на конкретный объект. Процесс управляется предварительно обученными генеративными моделями (image-to-3D), что дает точную стартовую инициализацию для 4D-реконструкции.- Деформируемое 3D-представление: Использует передовые методы дифференцируемого рендеринга и технологию 3D Gaussian Splatting для генерации подвижных артикулированных структур.- Регуляризация через 2D-трекинг: Применяет стратегию долгосрочного отслеживания 2D-точек (multi-chunk strategy) на протяжении всего видеоряда. Это позволяет строго контролировать правильность оптимизации сложных деформаций.Преимущества- Устойчивость в сложных сценариях: Алгоритм уверенно обрабатывает длинные видеоряды со значительными искажениями формы объектов, масштабными движениями камеры и ограниченными углами обзора — с теми факторами, которые обычно выводят из строя классические системы реконструкции.- Универсальность (Category-Agnostic): Способен реконструировать высококачественные 3D-представления самых разных объектов без привязки к их категории и без использования заранее заготовленных 3D-шаблонов.- Генерация качественного контента: Предоставляет высокую геометрическую точность и временную стабильность, делая метод идеальным инструментом для создания 3D-анимаций, передовых визуальных эффектов и глубокого понимания динамических сцен.Скачать с GitHub⬇️Поддержать автора⬇️✅SBER: 2202 2050 1464 4675
123apps — мультитул для файлов, который заменит кучу сервисов 🛠Мы нашли сервис, в котором собрано вообще все, что только может понадобиться для работы с видео, аудио, PDF, картинками и кучей других форматов. Выглядит как скромный сайт-конструктор, но а внутри — настоящий цифровой швейцарский ножЧто умеет:➡️ Видео — обрезать, склеить, добавить музыку/текст/картинку, убрать логотип или водяной знак, замедлить, ускорить, стабилизировать трясущееся видео и даже записать экран➡️ Аудио — сделать рингтон, наложить голос, поиграть с эквалайзером, повысить/понизить тон, извлечь звук из видео и склеить треки➡️ ПДФ — конвертировать из/в Word, Excel, JPG, объединить и разбить, сжать, поставить или снять пароль, добавить номера страниц➡️ Конвертеры — больше 300 форматов (видео, аудио, фото, документы, электронные книги, архивы). Можно гибко выбрать качество➡️ Архиватор — открывает более 60 типов архивов и пакует в ZIPСам сервис предлагает хороший бесплатный набор: до 5 файлов, каждый до 500 МБ в день, что для разовых задач и большинства бытовых нужд хватает с головой#ПРОсервисы
Буду на holyjs.ru в мае, правда очень жду этой конфы, давно уже никуда не ездил.Стикеры с @reatom_ru, конечно, возьму с собой, так что находите меня там и спрашивайте 💜
Если у вас когда-нибудь заблокируют аккаунт ChatGptзнайте, что ситуация поправима. В комментариях к этому посту вы найдете истории о том, как люди возвращали свои аккаунты и что они писали в поддержку
Налоги за базар!Вы знаете, почему граждане, выбравшие стезю преступного промысла, тщательно следят за базаром?Нет, понятия – это прекрасно, но почему? А потому, что они прекрасно знают цену слову. Языком не то и не там брякнул, и либо + еще состав себе наболтал, либо пику в бок в камере получил. Так что за словами надо следить.Налоговики решили перенять данный подход и …., нет, пика в бок тем налогоплательщикам, кто не следит за базаром пока еще не грозит, а вот за неосторожное слово с мая 2026г. уже можно выхватить чисто налоговых проблем.ФНС расширяет применение ИИ и с мая пояснения к отчетности будет пропускать через него.Алгоритмы ИИ от ФНС будут анализировать текст и реагировать на слова-маркеры. Кроме того, утверждается что анализироваться будет не только то, что написано, но и как, и в каком контексте.Понимать смысл сказанного ИИ не будет, да и не ждет никто от него этого, а вот реагировать на определенные триггеры (слова и конструкции, которые система связывает с налоговыми рисками) - будет.Например, триггерами и маркерами являются следующие фразы:- «ошибка» - признак занижения налоговой базы;- «к сожалению» - объяснение без конкретики;- «на основании договоров» - сокрытие истинного экономического смысла операции.- «не обязаны представлять» - вызов, уклонение от пояснений.База триггеров и маркеров будет постоянно расширяться.То есть ответ на запрос налоговой перестает быть пустой формальностью, а становится вполне себе отдельным, ответственным процессуальным действием, весьма требовательным не только к тому, что в нем написано, но и как.Продолжаем наблюдение!
Давайте раскидаем по фактам:1) "Изменения в одном почти всегда влекут изменения в соседних" и "как ты будешь добавлять новый функционал".Это, пожалуй, редфлаг номер один, этот аргумент в разных вариациях встречается настолько часто, что у меня давно заготовлен типовой ответ: никак. Если вы хотя бы раз использовали сторонние сервисы (оплата, авторзация, видео и т.д.), то знаете, что их интерфейс строится по принципу "конструктора", т.е. сложное поведение достигается не через добавление новых методов , а через построение композиции вызовов (это и есть основная задача проектирования), если бы автор комментария был прав, то мы бы не смогли разрабатывать никакие новые фичи, если используем внешние сервисы.Идея о том, что меняются только "близкие" сервисы - это признак очень кривой декомпозиции, значит автор проводит границу сервиса игнорируя когезию. В противном случае у него бы получилась нормальная декомпозиция сервисов, которые через свои интерфейсы позволяют составлять сложные композиции.Я регулярно встречаю команды, где буквально на каждый чих создается новый метод, или меняются существующие, всем плевать на версионирование, раздельную публикацию сервисов, изолированне тестирование и т.д. Все тестируется одним скопом, разворачивается так же все вместе, и конечено же это распределенный монолит.2) "То что у тебя все еще открывается интерфейс или страница логина, но в сам сервис ты не можешь зайти, потому-что, например отлетела авторизация - как бы не особо делает весь твой сервис рабочим."Если вы думали, что неумение проектировать это единственный недостаток моих оппонентов, то вот вам еще один - неумение анализировать.У автора комментария все смещалось в кучу, он выделил систему, как отдельный сервис, который неожиданно упал. Естественно такое возможно только в учебных проектах, где система авторизации и аутентификации может быть представлена одним сервисом. Но в реальных проектах авторизация - это целый набор сервисов (SSO, сервис токенов, сервис доступов/политик), в реальности эти сервисы задублированы и используются автоматические способы переключения между ними (Circuit Breaker).Исходя из представления "авторизация - это один сервис", можно легко сделать вывод о уровне подготовки наших оппонентов.Хочется еще раз сказать, ребята, давайте каждый будет заниматься тем делом, которым умеет? Потому что пока вы поражаете своей дремучей безграмотностью.