При работе с базами данных в Java, использование
PreparedStatement является предпочтительным методом по сравнению с обычным Statement. Это связано с тем, что PreparedStatement помогает предотвратить SQL-инъекции и улучшает производительность за счет предварительной компиляции SQL-запросов.Пример использования PreparedStatement
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JdbcPreparedStatementExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3000/mydatabase";
String user = "username";
String password = "password";
String sql = "INSERT INTO users (username, password) VALUES (?, ?)";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, "newuser");
pstmt.setString(2, "securepassword");
pstmt.executeUpdate();
System.out.println("User added successfully!");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Использование
PreparedStatement не только защищает ваше приложение от SQL-инъекций, но и улучшает читаемость кода. Это особенно важно при работе с пользовательскими данными.Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2
Разберём принципиальные различия между низкоуровневым JDBC и ORM-подходом JPA.
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
while (rs.next()) {
String name = rs.getString("name");
// ручное преобразование
}
Характеристики:
- Низкоуровневый API для SQL-запросов
- Требует ручного управления соединениями
- Необходимо вручную преобразовывать ResultSet в объекты
@Entity
public class User {
@Id
private Long id;
private String name;
// геттеры/сеттеры
}
// Использование:
User user = entityManager.find(User.class, 1L);
- Высокоуровневая абстракция (ORM)
- Работа с объектами вместо SQL
- Автоматическое управление сессиями
- Кеширование, ленивая загрузка
▫️ Уровень абстракции
JDBC: SQL-ориентированный
JPA: Объектно-ориентированный
▫️ Преобразование данных
JDBC: Ручное
JPA: Автоматическое
▫️ Производительность
JDBC: Выше
JPA: Может быть ниже из-за накладных расходов
▫️ Код
JDBC: Больше boilerplate
JPA: Лаконичнее
▫️ Портативность
JDBC: Зависит от SQL диалекта
JPA: Независимость от БД
Резюмируем:
- JDBC даёт полный контроль, но требует больше кода
- JPA повышает продуктивность, скрывая сложности
- Для сложных запросов иногда комбинируют оба подхода
- Выбор зависит от проекта: JPA для бизнес-приложений, JDBC для высоконагруженных систем
Совет: Современные проекты часто используют Spring Data JPA, который ещё больше упрощает работу с JPA.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4
Ответ -
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
Тернист и извилист путь Java-платформы к правильному способу записи строчек в лог-файлы. История logging в Java довольно познавательна в плане изучения особенностей Open Source, в том числе его взаимодействия с корпорациями и единичными программистами.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Ответ -
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
На сегодняшний день sonarqube - один из самый известный способ автоматического анализа кода и его ревью. В данной статье показан процесс настройки sonarqube для вашего проекта.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Roadmap "Как стать java разработчиком".
Карта показывает необходимые навыки для изучения
🔗 Ссылка
👩💻 Java Developer | Backend |#⃣ #обучение #java
Карта показывает необходимые навыки для изучения
🔗 Ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
Если вы все еще вручную копируете данные из Entity в DTO через сеттеры, пора переходить на MapStruct. Это кодогенератор, который работает на этапе компиляции. В отличие от аналогов на Reflection (типа ModelMapper), он создает чистый и быстрый Java-код, который легко дебажить.
Почему это стандарт индустрии?
Пример реализации:
@Mapper(componentModel = "spring")
public interface UserMapper {
@Mapping(source = "email", target = "login")
@Mapping(target = "fullName", expression = "java(u.getFirstName() + ' ' + u.getLastName())")
UserDto toDto(User u);
}
MapStruct делает ваш код чище, а разработку — приятнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
Нашел крутой тренажер для тех, кто хочет подтянуть SQL без скучной теории. Главный плюс — вы решаете задачи в браузере на живых базах данных.
Почему стоит глянуть:
🔗 Ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
SonarQube — стандарт индустрии для контроля качества Java-кода. Инструмент автоматизирует поиск багов, уязвимостей и «запахов кода», бесшовно интегрируясь в CI/CD через Maven или Gradle. Это позволяет поддерживать архитектурную целостность и системно минимизировать техдолг. Применение SonarQube гарантирует, что в релизную ветку попадает только код, прошедший строгую проверку на надежность и производительность.
Quality Gates — это автоматизированный «чек-лист», определяющий готовность кода к деплою. Если проект не соответствует заданным порогам, статус проверки меняется на Failed, и сборка блокируется.
Использование Quality Gates исключает субъективность при приемке кода и позволяет команде сфокусироваться на создании фич, не отвлекаясь на базовый аудит безопасности.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
В современной Java-разработке до 90% итогового кода приложения составляют сторонние библиотеки. SCA (Software Composition Analysis) — это методология автоматизированного аудита этих зависимостей. В отличие от классического статического анализа (SAST), который проверяет ваш авторский код, SCA фокусируется на рисках, приходящих извне вместе с Open Source компонентами.
Инструменты SCA анализируют манифесты сборки (например,
pom.xml или build.gradle) и выявляют две основные группы проблем:Если в проекте используется библиотека с публично известной дырой в безопасности, SCA заблокирует сборку.
Пример в Maven:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>
2.17.1.SCA проверяет, не нарушают ли лицензии библиотек юридическую политику компании.
Внедрение SCA в CI/CD пайплайн Java-проекта — это не просто дополнительный этап проверки, а критическое требование безопасности. Это позволяет разработчикам использовать всю мощь Open Source, сохраняя контроль над защищенностью и юридической чистотой продукта. В современных реалиях SCA является обязательным дополнением к анализу кода, формируя комплексный подход к качеству ПО.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Если вы ищете способ подтянуть свои навыки работы с базами данных, забудьте про скучные учебники. Есть кое-что поинтереснее — SQL Murder Mystery.
В городе произошло преступление. У вас есть только дата, место и доступ к полицейской базе данных. Ваша задача — через SQL-запросы восстановить цепочку событий, найти свидетелей и, наконец, вычислить убийцу.
Почему это круто:
🔗 Ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Много раз получал вопросы: «Где попрактиковаться перед собеседованием?», «Как понять, готов ли я?». Наконец сделал то, что сам хотел бы иметь когда готовился.
Представляю @interviewer_tg_bot — тренажёр технических собеседований прямо в Telegram 🎯
Что умеет:
— Задаёт реальные вопросы по Java, Python, Go, C#, React, Angular, Vue, Node.js, PHP, SQL, DevOps, QA и другим направлениям
— Принимает ответы голосом или текстом
— Оценивает ответ через AI и даёт развёрнутый фидбек
— Проводит mock-интервью — 5 вопросов подряд с итоговой оценкой как на настоящем собеседовании
— Подбирает вопросы под твой уровень: Junior / Middle / Senior
Первые 5 вопросов бесплатно — попробуй прямо сейчас.
👉 @interviewer_tg_bot ✔️
Переходи скорее!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2