Уютное сообщество джавистов
Уютное сообщество джавистов - это хорошие материалы,задачки, туториалы для проверки знаний и обратная связь от соратников по изучению. @viktorreh
Show more2 207
Subscribers
-124 hours
-267 days
-8630 days
- Subscribers
- Post coverage
- ER - engagement ratio
Data loading in progress...
Subscriber growth rate
Data loading in progress...
От JDBC до Spring Data: часть 1
Общение с базой данных связано с огромным количеством технологий — навскидку вспоминаем JDBC, JPA, Hibernate и Spring Data. Они тесно переплетены, и не всегда люди чётко понимают, что есть что и зачем нужно.
В ближайших постах разложу по полочкам основные технологии по работе с данными.
❓Почему всё так сложно? Почему нельзя сохранить всё как есть?
Приложение использует оперативную память и представляет данные в виде объектов. Можно работать с любым объектом в любой момент — чтение и запись происходят быстро. Минус оперативки — когда приложение завершается, память освобождается, и данные пропадают.
Чтобы данные пережили приложение, они записываются в постоянную память. Хранением и организацией данных занимается БД.
В оперативке данные лежат кое-как — где место нашлось, там объект и создаётся. В постоянной памяти данных много, всё упорядочено и оптимизировано. Поэтому модели данных в БД и приложении иногда отличаются.
А ещё БД — это отдельное приложение. В итоге для сохранения/извлечения данных нужна куча дополнительной работы:
🔸 открыть соединение
🔸 составить SQL запрос
🔸 передать в запросе данные из приложения
🔸 преобразовать ответ БД в java объект
🔸 закрыть соединение
JDBC
— стандартные java методы, которые выполняют все пункты выше. Все инструменты по работе с БД под капотом используют как раз JDBC.
Работа с соединениями и преобразование данных — утомительная работа. Поэтому и появляются библиотеки, облегчающие этот труд.
Spring JDBC
берёт на себя работу с соединениями. Разработчик всё так же составляет запросы, передаёт параметры и преобразует ответы в java объекты.
ORM
Object Relational Mapping — преобразование данных (mapping) из java объектов в сущности БД и обратно.
Формально, ORM — просто название процесса. В случае JDBC весь ОRМ разработчик делает вручную.
На практике под ORM подразумевают ORM библиотеку/фреймворк — какой-нибудь инструмент, который берёт на себя часть работы по запросам и преобразованию данных.
Hibernate
— самая популярная ORM библиотека. Составляет простые SQL запросы и преобразует данные. Упростил жизнь многим и заслужил их любовь❤️
В хибернейте не всё идеально:
▪️ Работа с соединениями (сессиями) остаётся на пользователе
▪️ Для корректной работы надо знать внутрянку (dirty session, как разруливаются отношения и тд).
Сложно не признать, что Hibernate великолепен. Ворвался на олимп ORM библиотек в 2001 году и до сих пор оттуда не слезает🏆
JPA
Сейчас большинство приложений базируются на спринге, но 10-15 лет назад приложения часто опирались на Java ЕЕ. В те года ORM Java ЕЕ выглядел сложно — для каждой сущности требовались несколько классов и кучка интерфейсов.
Hibernate выглядел привлекательно, но нельзя просто взять и добавить библиотеку в проект. Во вселенной Java EE всё работает через спецификации — стандартные интерфейсы.
Поэтому появилась новая спека по ORM — Java Persistence API или JPA. С небольшими отличиями почти полностью списана с хибернейта. Вскоре Hibernate подстроился под JPA и стал использоваться в Java EE.
Итого
⭐️ JDBC — базовое API по работе с БД
⭐️ ORM — преобразование данных между приложением и БД. На практике под “у нас на проекте ORM” имеют в виду, что используется ORM библиотека, например, Hibernate
⭐️ JPA — спецификация по ORM. Набор интерфейсов, аннотаций и описание, как всё должно работать. Не включает в себя конкретную реализацию
⭐️ Hibernate — популярная ORM библиотека, реализующая JPA
В следующем посте распишу вариации Spring Data, и почему материалы по хибернейт могут не соответствовать реальности.
#полезное
Using Entity Beans
Sun Microsystems, Inc. is delivering Sun ONE e-commerce software and enterprise solutions that enable companies to compete successfully in the Net Economy.
🔥 6👍 1❤ 1😁 1
Photo unavailableShow in Telegram
👩💻 Интеграционные тесты с контекстом. Тестирование слоя репозиториев и сервисов.
Ждём вас на втором занятии серии открытых практических уроков по тестированию Spring-приложений от OTUS:
На вебинаре мы:
- обсудим особенности тестирования компонентов Spring-приложения с подъемом тестового контекста;
- рассмотрим, как можно протестировать слой репозиториев на базе JDBC и JPA, а также работу с транзакциями на сервисном слое;
- ответим на все возникающие вопросы.
Спикер — Senior Software Engineer и опытный преподаватель.
Встречаемся 1 июля в 20:00 мск в преддверии старта курса «Разработчик на Spring Framework».
Все участники вебинара получат специальную цену на обучение!
➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок и получить запись предыдущего вебинара серии: https://vk.cc/cxZMkT
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🥰 1
Photo unavailableShow in Telegram
💡Задача: Сумма вдоль столбцов
Условие: дается квадратная матрица, необходимо вычислить минимальную сумму вдоль столбца.
Есть условие на движение вдоль столбца есть ограничение: можно перемещаться на ячейку вниз лишь по диагонали или строго вниз.
Пример:
Ввод: matrix = [[2,1,3],[6,5,4],[7,8,9]]
Вывод: 13
Объяснение: *во вложении
Решение
👍 2🎉 1
Photo unavailableShow in Telegram
🧑💻 Виды тестов. Основные инструменты и их использование
Ждём вас на первом занятии серии открытых практических уроков по тестированию Spring-приложений от OTUS, где мы:
- сделаем фокус на теории и основных инструментах тестирования Java-приложений;
- обсудим, как сделать наше приложение тестируемым, какие тесты бывают и как для их написания использовать такие фреймворки и библиотеки как JUnit5, Mockito, AssertJ с учетом некоторых их особенностей и возможностей;
- ответим на все возникающие вопросы.
Спикер — Senior Software Engineer и опытный преподаватель.
Встречаемся 24 июня в 20:00 мск в преддверии старта курса «Разработчик на Spring Framework».
Все участники вебинара получат специальную цену на обучение!
8️⃣9️⃣🔟Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cxOPCH
🎁 Только до 23 июня скидка на курс 10%, подробности у наших менеджеров - просто оставь заявку.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🚀 Юнит-тестирование вашей Java-архитектуры 🚀
@archtests
- это мощная библиотека Java, которая позволяет писать модульные тесты для обеспечения соблюдения архитектурных ограничений и правил в вашем коде.
https://archunit.orgUnit test your Java architecture
Start enforcing your architecture within 30 minutes using the test setup you already have.
😁 1
Photo unavailableShow in Telegram
Надоела рутинная разработка? У нас для тебя кое-что есть…
Приходи на открытый вебинар «Интерактивная разработка на языке Clojure». Спорим, после этого ты захочешь добавить его в свой стек?
Встречаемся 30 мая в 20:00 мск. Дадим не только много крутой практической инфы, но и скидку на обучение.
➡️ Регистрируйся, чтобы не пропустить: https://vk.cc/cx3yLo
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Подборка викторин по Java.
Проверьте ваши знания вместе с qarocks.ru
Викторина по Java перечислениям Enums
Насколько хорошо вы знакомы с enum в Java? Давайте узнаем это с помощью викторины для начинающих!
Викторина по регулярным выражениям Java RegEx
Давайте проверим ваши знания о регулярных выражениях в Java!
Викторина по массивам в Java
Давайте проверим ваши знания о массивах в Java!
Викторина по типу String в Java
В этой викторине мы проверим ваши знания о строках в Java.
Викторина по методам Java
Давайте проверим ваши знания о методах в Java!
Викторина по интерфейсам в Java
Проверьте свои знания в интерфейсах на языке программирования Java с помощью нашей викторины.
Викторина по строкам в Java
Ответьте на вопросы нашей викторины, чтобы проверить свои знания по строкам на языке программирования Java.
Викторина по наследованию в Java
Проверьте свои знания в наследовании на языке программирования Java с нашей викториной!
Викторина по массивам в Java
Эта викторина из 10 вопросов поможет проверить ваши знания по массивам на языке программирования Java!
Викторина по типам данных в Java
Давайте проверим ваши знания и понимание различных типов данных в языке программирования Java.
#викторины #подборка
Надеемся на отличные результаты.
Хорошего дня всем!
Викторина по Java перечислениям Enums
Что такое enum (сокращение от "enumeration"), или перечисление, в Java Давайте узнаем это с помощью викторины для начинающих!
😁 2
Photo unavailableShow in Telegram
👩💻Как писать более чистый код на Java с помощью перегрузки методов?
Перегрузка — очень мощная техника для случаев, когда нужно одинаковое имя метода с разными параметрами. Вместо того, чтобы дублировать имя метода и добавлять беспорядок в ваш код, вы можете просто перегрузить его. Это позволяет сохранять код чистым, а также снижает риск того, что дублирующие методы сломают часть системы.
Как это провернуть? Расскажет опытный эксперт на открытом практическом уроке от OTUS! Встречаемся 26 апреля в 20:00 мск в преддверии старта курса «Углубленное изучение языка Java».
Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS!
➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cwlyGe
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Choose a Different Plan
Your current plan allows analytics for only 5 channels. To get more, please choose a different plan.