Обновить
512K+

Java *

Объектно-ориентированный язык программирования

200,68
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Как использовать тип JSONB в PostgreSQL с Hibernate

Время на прочтение6 мин
Охват и читатели54K

Многие СУБД, помимо поддержки стандарта SQL, предлагают дополнительную проприетарную функциональность. Одним из таких примеров является тип данных JSONB в PostgreSQL, позволяющий эффективно хранить JSON-документы.

Конечно, хранить JSON-документ можно и в виде простого текста — это входит в стандарт SQL и поддерживается Hibernate и JPA. Но тогда вам не будут доступны возможности PostgreSQL по обработке JSON, такие как валидация JSON и другие интересные функции и операторы. Хотя, вероятно, вы об этом уже знаете, раз читаете этот пост.

Если вы хотите использовать колонку типа JSONB с Hibernate 6, то у меня для вас отличные новости. В Hibernate 6 появился стандартный маппинг атрибутов сущностей на колонки JSON — необходимо только его активировать. К сожалению, Hibernate 4 и 5 не поддерживают JSON-маппинг, поэтому при их использовании придется реализовать UserType. Мы рассмотрим оба варианта.

Читать далее

Oauth 2.1 spring authorization server + SPA

Время на прочтение4 мин
Охват и читатели8.4K

Доброго всем дня уважаемые хабровчане!

До сего момента я являлся лишь читателем этого замечательного ресурса, но вот кажется и пришло время написать мою первую статью.

Oauth 2.1 - дальнейшее развитие популярного фреймворка авторизации Oauth 2.0, который на момент написания статьи всё ещё вроде как находится в стадии черновика. Но тем не менее уже начинает применяться. На хабре уже есть более подробная статья на эту тему.

Из не очень приятного, из Oauth 2.1 убраны варианты получения токена.

Читать далее

Компилирование и исполнение Java-кода в Runtime

Время на прочтение4 мин
Охват и читатели16K

Привет Хабр! Сегодня я хотел бы поговорить про динамическое компилирование и исполнение Java-кода, подобно скриптовым языкам программирования. В этой статье вы найдете пошаговое руководство как скомпилировать Java в Bytecode и загрузить новые классы в ClassLoader на лету.

Читать далее

Проверка JavaScript-движка Rhino, или как встретились единорог с носорогом

Время на прочтение22 мин
Охват и читатели3.3K

Имеется большое разнообразие языков программирования, но больше всего наши пользователи хотят, чтобы анализатор PVS-Studio поддержал один из самых популярных языков – Javascript. Одним из проектов, который можно использовать для написания статического анализатора JavaScript, является движок Rhino. В данной статье мы проведём анализ исходного кода Rhino при помощи PVS-Studio.

Читать далее

GraphQL: доступ запрещен

Время на прочтение10 мин
Охват и читатели6.6K

Жил-был один маленький разработчик, работал себе над REST API и горя не знал. Но вот приходит к нему тимлид и предлагает затащить GraphQL. Казалось бы: классный и мощный GraphQL — это запросто! Но в процессе проектирования API разработчик столкнулся с неожиданными проблемами и суровыми испытаниями: система оказалась довольно сложна и полна различных прав и ролей.

Всем привет! Меня зовут Олег, я — бэкенд-разработчик системы Talantix. В этой статье я расскажу о том, как работать с доступом к данным в GraphQL.

Читать далее

Обработка исключений в Java в функциональном стиле. Часть 2

Время на прочтение4 мин
Охват и читатели9.1K

Обработка исключений в Java в функциональном стиле. Часть 2.


В предыдущей статье была рассмотрена функциональная обработка исключений с помощью интерфейса Try<T>. Статья вызвала определенный интерес читателей и была отмечена в "Сезоне Java".


В данной статье автор продолжит тему и рассмотрит простую и "грамотную" (literate) обработку исключений при помощи функций высшего порядка без использования каких либо внешних зависимостей и сторонних библиотек.

Читать дальше →

Что поможет вам стать программистом

Время на прочтение22 мин
Охват и читатели24K

Попытаюсь дать несколько советов начинающим изучать программирование и освоить профессию разработчика программного обеспечения. Возможно, некоторые из них вам покажутся спорными, у вас другой план на обучение или опыт когда удалось "войти в айти". Все рассказаное дальше субъективно, основано на моем опыте как интервьювера на Java вакансии, инженеров по данным.

* Определить свою мотивацию, нишу и специализацию

* Нужно ли профильное высшее образование.

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

Читать далее

Java Middle Interview

Время на прочтение18 мин
Охват и читатели82K

Как подготовиться к собеседованию Java Middle.

Насколько насущный для людей уже имеющих какой-никакой опыт в Java вопрос о повышении уровня и движении дальше? Есть люди, которые выбирают долгий и тернистый путь Back-End разработчика штудируя все новые и новые для себя языки программирования, углубляясь в аппаратную или даже DevOps часть. Безусловно, это все полезные навыки и честь и хвала тому кто выбрал для себя этот путь. Но ведь есть и такие которые "всем сердцем любят" Java и хотят достичь высот именно с этим языком, не "отвлекаясь на всякие" Ruby-on-Rails, Python, C# или node.js.

Читать далее

Топ вещей из Java, которых мне не хватает в C#

Время на прочтение5 мин
Охват и читатели24K

Спор "Java vs. C#" существует чуть меньше, чем вечность. Есть много статей, затрагивающих разные участки его спектра: Что есть в C# чего нет в Java, что языки друг у друга позаимствовали, у одних LINQ, у других обратная совместимость, в общем, тысячи их.

Однако, я никогда не видел, чтобы писали о чём-то, что в Java, с точки зрения фич языка есть, чего в C# нет. Впрочем, я здесь не для того, чтобы спорить. Эта статья призвана выразить моё субъективное мнение и заполнить небольшой пробел по теме, озвученной в заголовке.

Читать далее

Готовим приватные репозитории с помощью Artipie

Время на прочтение9 мин
Охват и читатели6.8K

Многочисленные санкционные ограничения могут стать преградой для использования существующих систем управления бинарными репозиториями, например, при приобретении необходимых лицензий. Таким образом, альтернатива существующим инструментам может сыграть положительную роль при организации работы с артефактами организации.

Artipie - это бесплатный менеджер бинарных репозиториев с открытым исходным кодом, поддерживающий все основные форматы пакетов и артефактов, который позволяет размещать их локально или в облачном хранилище.

Заготовить репозитории на "зиму"

Spring Data JDBC – генерация первичных ключей с помощью последовательностей (sequence)

Время на прочтение4 мин
Охват и читатели5.2K

По умолчанию Spring Data JDBC ожидает, что первичные ключи сущностей генерируются на стороне базы данных. В статье Introduction to Spring Data JDBC (Введение в Spring Data JDBC) мы использовали вариант с автоинкрементной колонкой, а в этой статье рассмотрим другой способ – использование последовательностей (sequence).

Spring Data JDBC, конечно, справится и с этим, но придется написать чуть больше кода: получить из базы данных очередное значение последовательности и установить первичный ключ перед сохранением сущности в базе данных. Это можно сделать, реализовав BeforeConvertCallback.

Читать далее

Золотой Selenide. Мои лучшие практики по тестированию

Время на прочтение8 мин
Охват и читатели31K

Автор не разделяет понятий чистый автоматизатор или мануальщик, он является Инженером, инженером по тестированию который отвечает за то и другое, являясь истинным QA. Но упор в статье пойдет по практикам автоматизации

Немного теории. Немного код сниппетов.

Ближайшие события

Развертывание Spring Boot приложения с помощью Nginx, Let's Encrypt и Docker Compose

Время на прочтение7 мин
Охват и читатели31K

Привет, Хабр! В своей первой статье я бы хотел поделиться опытом в развертывании Spring Boot приложения. Но для начала небольшое отступление, которое должно ответить на вопросы зачем и почему.

Недавно я столкнулся с задачей разработать Telegram бота. Казалось бы, что тут сложного? Ну раз надо, то разрабатывай, где тут могут быть сложности? Но вот беда, ранее я не сталкивался с задачей развертывания проекта, тем более было много вопросов касаемо получения SSL сертификата так как Telegram API работает только с HTTPS протоколом. Увы после долгих поисков я так и не нашел статьи, которая ответила бы на все вопросы, поэтому процесс деплоя затянулся из-за того, что пришлось собирать весь материал по кусочкам. Теперь, когда у меня получилось разобраться с этой проблемой, я бы хотел вам рассказать как это сделать, чтобы сэкономить вам время и бонусом 2000 рублей за SSL сертификат.

Читать далее

Как мы внедряли tracing

Время на прочтение6 мин
Охват и читатели17K

Представьте: у вас пара сотен микросервисов, и вдруг всё ломается. А может даже не всё, а, скажем, только одна страница. Если вы хорошо знакомы с системой, то по мониторингам и логам быстро обнаружите проблему и пойдете её решать. Но иногда систему вы видите впервые, и на поиск бага могут часы, или даже дни.

Всем привет, меня зовут Саша Казанцев, я — тимлид команды “Clickme” в hh.ru. В этой статье расскажу о том, как мы внедряли трейсинг. 

Читать далее

Парсинг JSON с помощью Jackson

Время на прочтение10 мин
Охват и читатели163K

Большая часть веба на сегодняшний день обменивается данными в формате JSON. Веб-серверы, веб-приложения и мобильные приложения, даже устройства IoT общаются друг с другом, используя JSON. Простой и гибкий способ обработки JSON необходим любому программному обеспечению, чтобы выжить в современном мире.

Эта статья сопровождается примером рабочего кода на GitHub.

Читать далее

Сколько школ во всем мире? Чтение сотен гигабайт OpenStreetMap данных в JVM из Apache Arrow

Время на прочтение6 мин
Охват и читатели4.7K

JVM основная платформа для Big Data решений, таких как Hadoop, Spark, Presto, NiFi но на производительность значительно влияют копирование/сериализация данных "на каждый чих" с последующей сборкой мусора и отсутствие SIMD оптимизаций при работе с данными.

А можно ли в программе на JVM прочитать сотни гигабайт Parquet файлов без Spark/Hadoop? В этом нам поможет библиотека Apache Arrow - проект, которым объединяются десятки решений для работы с Большими Данными. Но для этого даже не обязателен кластер с тысячами ядер и петабайты хранилища! Обработку данных начнем с "золотого стандарта" для open source: PostgreSQL 14 + PostGIS 3.2.0, а продолжим на OpenJDK 11 + Apache Arrow 9.0.0.

В качестве примера измерим с неизвестной точностью "среднюю температуру по больнице" - мы посчитаем число школьных зданий по всему миру в проекте OpenStreetMap. И когда говорят что образование избыточно и в школе дают много лишних знаний, то сразу же хочется задать компьютеру этот вопрос, сверив его с географией.

Читать далее

Spring Boot @ConfigurationProperties и коллекции

Время на прочтение5 мин
Охват и читатели17K

Дано:

Сервис на spring boot(2.6.4) + kotlin(1.5.31) по выгрузке произвольного количества отчётов по крону. Каждый отчет имеет свои настройки. Для конфигурирования списка свойств отчётов используется собственно список. Для инжекта в приложение используется data class с аннотацией @ConfigurationProperties, где одно из свойств - список data class.

Читать далее

Ускоряем разработку

Время на прочтение6 мин
Охват и читатели10K

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

Как сгенерировать UUID в качестве первичных ключей при помощи Hibernate

Время на прочтение8 мин
Охват и читатели20K

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

Читать далее