Java Developer | Backend
1.71K subscribers
136 photos
1 video
231 links
Авторский канал действующего java разработчика

Платформа: https://offercraft.ru

Сотрудничество @offercraft_support
Download Telegram
Использование PreparedStatement для предотвращения SQL-инъекций

При работе с базами данных в 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-инъекций, но и улучшает читаемость кода. Это особенно важно при работе с пользовательскими данными.

🖥Java Developer | Backend |#⃣ #обучение #java
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 и JPA подходами

Разберём принципиальные различия между низкоуровневым JDBC и ORM-подходом JPA.

1️⃣ JDBC (Java Database Connectivity)
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 в объекты

2️⃣JPA (Java Persistence API)
@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.

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4
Вопрос: Что такое Java Memory Model и как он влияет на многопоточность?
Ответ -
Java Memory Model (JMM) определяет, как потоки взаимодействуют друг с другом через общую память. Он гарантирует видимость изменений, сделанных одним потоком, для других потоков. JMM вводит понятия "синхронизация", "медленная и быстрая память" и "порядок выполнения", что помогает избежать проблем, таких как гонки данных. Для обеспечения корректного взаимодействия потоков используются ключевые слова volatile, synchronized и блоки Lock.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
Гениально же 😁

🖥 Java Developer | Backend | #⃣#мемы #java
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
🔤 Java Logging: история кошмара

Тернист и извилист путь Java-платформы к правильному способу записи строчек в лог-файлы. История logging в Java довольно познавательна в плане изучения особенностей Open Source, в том числе его взаимодействия с корпорациями и единичными программистами.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Какова цель метода Class.forName?
Ответ -
Этот метод используется для загрузки драйвера, который установит соединение с базой данных.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
🔤 Простые сценарии использования Sonarqube

На сегодняшний день sonarqube - один из самый известный способ автоматического анализа кода и его ревью. В данной статье показан процесс настройки sonarqube для вашего проекта.

🔗 Ссылка на статью

👩‍💻 Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Roadmap "Как стать java разработчиком".
Карта показывает необходимые навыки для изучения

🔗 Ссылка

👩‍💻 Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4