Java | Вопросы собесов – Telegram
Java | Вопросы собесов
11.4K subscribers
41 photos
3 videos
1.13K links
Download Telegram
🤔 Что такое ResultSet?

Интерфейс, который используется для хранения и управления результатами SQL-запроса типа SELECT к базе данных. Он позволяет Java-программе извлекать и обрабатывать данные, возвращаемые запросом.

🚩Почему это нужно?

🟠Получения данных
Когда выполняется запрос SELECT, база данных возвращает данные в виде таблицы. ResultSet позволяет получить эти данные и работать с ними в Java-коде.
🟠Обработки данных
ResultSet предоставляет методы для навигации по данным и извлечения значений из текущей строки.
🟠Управления данными
ResultSet включает методы для перемещения курсора по строкам данных и доступа к столбцам по имени или индексу.

🚩Как это используется?

1⃣Создание запроса и выполнение его
   Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM employees");


2⃣Навигация по данным
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
double salary = rs.getDouble("salary");
System.out.println("ID: " + id + ", Name: " + name + ", Salary: " + salary);
}


🚩Основные методы

🟠next()
Перемещает курсор к следующей строке.
rs.next();  


🟠getInt(), getString(), getDouble() и другие get-методы
Извлекают данные из текущей строки.
int id = rs.getInt("id");
String name = rs.getString("name");
double salary = rs.getDouble("salary");


🟠close()
Закрывает ResultSet и освобождает связанные с ним ресурсы.
rs.close();  


🟠getMetaData()
Возвращает объект ResultSetMetaData, содержащий метаданные о результирующем наборе данных, такие как количество столбцов и их типы.
ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();


🚩Пример использования

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ResultSetExample {
public static void main(String[] args) {
try {
// Подключение к базе данных
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "user", "password");

// Создание Statement и выполнение запроса
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id, name, salary FROM employees");

// Обработка результатов
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
double salary = rs.getDouble("salary");
System.out.println("ID: " + id + ", Name: " + name + ", Salary: " + salary);
}

// Закрытие ResultSet и Statement
rs.close();
stmt.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
🤔 Какие есть примитивные типы данных в Java

В Java существует восемь примитивных типов данных: `byte`, `short`, `int`, `long`, `float`, `double`, `char`, и `boolean`. Числовые типы включают целочисленные (`byte`, `short`, `int`, `long`) и с плавающей точкой (`float`, `double`). Тип `char` предназначен для символов Unicode, а `boolean` представляет логические значения `true` и `false`.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26👾3😁1
🤔 В чем разница между Statement и PreparedStatement?

Это два интерфейса в JDBC, которые используются для выполнения SQL-запросов к базе данных. Основные различия между ними касаются производительности, безопасности и удобства использования.

🚩Statement

Statement используется для выполнения простых SQL-запросов. Запросы формируются и передаются в базу данных в виде строки. Подходит для простых запросов. Не оптимизирован для повторного выполнения. Каждый раз, когда запрос передается в базу данных, он компилируется и выполняется заново. Уязвим к SQL-инъекциям. Поскольку запрос формируется путем конкатенации строк, злоумышленники могут внедрять вредоносный SQL-код.
Statement stmt = connection.createStatement();
String query = "SELECT * FROM employees WHERE department = 'HR'";
ResultSet rs = stmt.executeQuery(query);

while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
stmt.close();


🟠PreparedStatement
PreparedStatement используется для выполнения предварительно скомпилированных SQL-запросов. Это позволяет повысить производительность и безопасность. Оптимизирован для повторного выполнения. Запрос компилируется только один раз, а затем может многократно выполняться с разными параметрами, что повышает производительность. Защита от SQL-инъекций. Использует параметризованные запросы, которые помогают избежать уязвимостей, связанных с SQL-инъекциями. Удобство работы с параметрами. Позволяет устанавливать значения параметров с использованием методов setInt(), setString() и других.
String query = "SELECT * FROM employees WHERE department = ?";
PreparedStatement pstmt = connection.prepareStatement(query);
pstmt.setString(1, "HR");
ResultSet rs = pstmt.executeQuery();

while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
pstmt.close();


🚩Основные различия

🟠Производительность
Statement: Каждый запрос компилируется заново, что снижает производительность при многократном выполнении одного и того же запроса.
PreparedStatement: Запрос компилируется один раз и может многократно выполняться с разными параметрами, что повышает производительность.
🟠Безопасность
Statement: Уязвим к SQL-инъекциям, поскольку запросы формируются путем конкатенации строк.
PreparedStatement: Использует параметризованные запросы, что защищает от SQL-инъекций.
🟠Удобство использования
Statement: Подходит для простых, одноразовых запросов.
PreparedStatement: Удобен для многократного выполнения запросов с разными параметрами.
🟠Типы запросов
Оба интерфейса могут выполнять запросы типа SELECT, INSERT, UPDATE, DELETE, но PreparedStatement более удобен для запросов с параметрами.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍161
🤔 Зачем вообще нужен класс Object?

Класс Object — это корневой класс в Java, от которого наследуются все остальные классы. Он предоставляет базовые методы, такие как equals(), hashCode(), и toString(), для работы с любым объектом. Этот класс также позволяет создавать общие контейнеры и обрабатывать объекты полиморфно.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥2🤔2
🤔 Как можно установить соединение с базой данных?

Установление соединения с базой данных в Java осуществляется с использованием JDBC (Java Database Connectivity). Это API предоставляет возможность подключения к различным базам данных, выполнения запросов и управления полученными результатами.

🚩Шаги для установления соединения

1⃣Загрузка драйвера JDBC
JDBC-драйвер должен быть доступен в classpath вашего проекта. Обычно драйвер предоставляется в виде JAR-файла, который можно скачать с сайта производителя базы данных. В старых версиях JDBC нужно было явно загружать драйвер с помощью Class.forName(). В современных версиях это делается автоматически при наличии драйвера в classpath.
2⃣Создание строки подключения (URL)
Строка подключения содержит информацию о типе базы данных, сервере, порте, имени базы данных и других параметрах подключения.
3⃣Установка соединения
Соединение с базой данных устанавливается с помощью класса DriverManager и его метода getConnection().

🚩Пример кода

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DatabaseConnectionExample {
public static void main(String[] args) {
// URL подключения к базе данных
String url = "jdbc:mysql://localhost:3306/mydatabase";
// Имя пользователя базы данных
String username = "myusername";
// Пароль пользователя базы данных
String password = "mypassword";

Connection connection = null;

try {
// Установка соединения с базой данных
connection = DriverManager.getConnection(url, username, password);
System.out.println("Соединение установлено!");

// Здесь можно выполнять SQL-запросы

} catch (SQLException e) {
e.printStackTrace();
} finally {
// Закрытие соединения
if (connection != null) {
try {
connection.close();
System.out.println("Соединение закрыто!");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}


🚩Детали по шагам

1⃣Загрузка драйвера JDBC
Для MySQL это может быть драйвер mysql-connector-java. Он должен быть добавлен в classpath проекта. В современном JDBC (4.0 и выше) явная загрузка драйвера не требуется, если драйвер находится в classpath.
2⃣Создание строки подключения (URL)
Формат строки подключения для MySQL: jdbc:mysql://<host>:<port>/<database>?<parameters> Пример: jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC
3⃣Установка соединения
Метод DriverManager.getConnection(url, username, password) используется для установления соединения.

🚩Параметры строки подключения

jdbc:mysql:// — Префикс для драйвера MySQL.
localhost — Сервер базы данных.
3306 — Порт, на котором запущен сервер базы данных.
mydatabase — Имя базы данных.
useSSL=false — Опция, указывающая не использовать SSL (включите SSL на продуктивных системах).
serverTimezone=UTC — Опция, указывающая временную зону сервера.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
🤔 Какие участки памяти в JVM знаешь?

JVM использует несколько участков памяти: Heap, Stack, Method Area и Metaspace. Heap хранит объекты и динамически выделяемую память, Stack — локальные переменные, а Metaspace содержит метаданные классов. Method Area хранит байт-код, а также информацию о методах и полях классов.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍11
🤔 Расскажи про JdbcTemplate?

Это класс из Spring Framework, который значительно упрощает взаимодействие с базами данных с использованием JDBC. Он предоставляет удобные методы для выполнения SQL-запросов, обновлений и вызова хранимых процедур, абстрагируя при этом разработчика от низкоуровневых операций, связанных с управлением ресурсами, такими как открытие и закрытие соединений, обработка исключений и т.д.

🚩Функции

🟠Упрощение работы с JDBC
Управление соединениями, подготовленными выражениями и результатами запросов. Обработка исключений и перевод их в унифицированные исключения Spring.
🟠Методы для выполнения SQL-запросов
queryForObject(): для выполнения запросов, возвращающих один объект.
queryForList(): для выполнения запросов, возвращающих список объектов.
update(): для выполнения операций обновления (INSERT, UPDATE, DELETE).
🟠Поддержка параметризированных запросов
Методы позволяют легко устанавливать параметры запросов, избегая проблем с SQL-инъекциями.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🤔 Что такое процесс и поток, чем они отличаются?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2👾2
🤔 В чем заключаются преимущества использования JDBC?

Использование JDBC (Java Database Connectivity) в Java-приложениях предоставляет множество преимуществ, которые делают его стандартным выбором для работы с базами данных.

🟠Независимость от базы данных
JDBC предоставляет универсальный интерфейс для работы с различными базами данных. Это означает, что ваш код может работать с любой базой данных, для которой существует соответствующий драйвер JDBC. Это обеспечивает высокую степень переносимости вашего кода между различными СУБД (Системами управления базами данных).

🟠Унифицированный API
JDBC предоставляет единый набор интерфейсов и классов для работы с базами данных, что упрощает процесс разработки. Независимо от типа базы данных, с которой вы работаете, вы используете одни и те же методы и классы для выполнения запросов и обработки результатов.

🟠Поддержка SQL
JDBC полностью поддерживает SQL (Structured Query Language), что позволяет выполнять любые SQL-запросы: от простых SELECT до сложных JOIN и TRANSACTION. Это делает JDBC мощным инструментом для взаимодействия с базами данных.

🟠Управление транзакциями
JDBC поддерживает управление транзакциями, что позволяет выполнять группы операций как единое целое. Это обеспечивает целостность данных и возможность отката (rollback) изменений в случае ошибок.

🟠Обработка исключений
JDBC предоставляет механизм обработки исключений, что позволяет ловить и обрабатывать ошибки, связанные с базой данных, таким образом улучшая надежность и устойчивость приложений.

🟠Соединение с базой данных
JDBC управляет соединениями с базой данных, предоставляя методы для открытия и закрытия соединений. Это помогает избежать утечек ресурсов и обеспечивает эффективное использование соединений с базой данных.

🟠Поддержка параметризированных запросов
JDBC поддерживает параметризированные запросы, которые помогают избежать SQL-инъекций, повышая безопасность приложения. Параметризированные запросы позволяют безопасно вставлять данные в SQL-запросы.

🟠Простота использования
JDBC API интуитивно понятен и легко осваивается. Это позволяет разработчикам быстро начать работу с базами данных и интегрировать их в свои приложения.

🟠Гибкость
JDBC предоставляет низкоуровневый доступ к базе данных, что дает разработчикам большую гибкость в управлении запросами и обработке данных. Это позволяет выполнять оптимизации и настроить взаимодействие с базой данных в соответствии с конкретными требованиями.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👀2
🤔 В чём разница между final, finally, finalize?

final используется для обозначения констант и для запрета наследования или переопределения методов. finally — это блок, выполняющийся всегда в конце блока try-catch, независимо от исключений. finalize — это метод для очистки ресурсов перед удалением объекта сборщиком мусора.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥1
🤔 Что из себя представляет JDBC URL?

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

🚩Структура JDBC URL

jdbc:subprotocol://host:port/databaseName?key1=value1&key2=value2


🚩Использование

Для установления соединения с базой данных необходимо использовать JDBC URL вместе с методом DriverManager.getConnection(). Пример подключения к базе данных MySQL:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JdbcExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC";
String username = "myusername";
String password = "mypassword";

try {
// Установка соединения с базой данных
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println("Соединение установлено!");

// Здесь можно выполнять SQL-запросы

// Закрытие соединения
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🤔 Каким образом HashMap связан с Set?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥10
🤔 Из каких частей стоит JDBC?

Состоит из нескольких ключевых компонентов, которые вместе обеспечивают возможность взаимодействия Java-приложений с различными базами данных. Эти компоненты включают в себя интерфейсы, классы и методы, необходимые для выполнения SQL-запросов, управления соединениями и обработки результатов.

🚩Компоненты

🟠JDBC Driver
JDBC-драйверы обеспечивают связь между Java-приложением и базой данных. Каждый драйвер реализует интерфейсы, определенные в JDBC API, и отвечает за преобразование вызовов Java-методов в команды, понятные конкретной СУБД.
Type 1 (JDBC-ODBC Bridge Driver): Использует мост для взаимодействия с ODBC-драйверами. Устарел и редко используется.
Type 2 (Native-API Driver): Преобразует вызовы JDBC в вызовы API, зависящие от платформы. Требует нативных библиотек.
Type 3 (Network Protocol Driver): Преобразует вызовы JDBC в сетевые протоколы, которые сервер преобразует в вызовы СУБД.
Type 4 (Thin Driver): Преобразует вызовы JDBC непосредственно в сетевые протоколы СУБД. Наиболее распространенный тип.

🟠DriverManager
Класс DriverManager управляет набором зарегистрированных драйверов и предоставляет методы для получения соединений с базой данных. Он выбирает подходящий драйвер на основе JDBC URL.
getConnection(String url): Устанавливает соединение с базой данных, используя указанный URL.
getConnection(String url, String user, String password): Устанавливает соединение с указанием имени пользователя и пароля.

🟠Connection
Интерфейс Connection представляет собой соединение с конкретной базой данных. Он предоставляет методы для создания SQL-запросов, управления транзакциями и закрытия соединения.
createStatement(): Создает объект Statement для выполнения SQL-запросов.
prepareStatement(String sql): Создает объект PreparedStatement для выполнения параметризованных SQL-запросов.
setAutoCommit(boolean autoCommit): Управляет автоматической фиксацией транзакций.
commit(): Фиксирует текущую транзакцию.
rollback(): Откатывает текущую транзакцию.
close(): Закрывает соединение с базой данных.

🟠Statement
Интерфейс Statement используется для выполнения статических SQL-запросов и получения их результатов. Он также предоставляет методы для выполнения обновлений данных.
executeQuery(String sql): Выполняет SQL-запрос и возвращает объект ResultSet.
executeUpdate(String sql): Выполняет SQL-запрос и возвращает количество затронутых строк.
execute(String sql): Выполняет SQL-запрос, который может вернуть несколько результатов.

🟠PreparedStatement
Интерфейс PreparedStatement расширяет Statement и используется для выполнения предварительно скомпилированных SQL-запросов с параметрами. Это помогает избежать SQL-инъекций и повышает производительность при многократном выполнении одного и того же запроса.
setInt(int parameterIndex, int value): Устанавливает значение параметра типа int.
setString(int parameterIndex, String value): Устанавливает значение параметра типа String.
executeQuery(): Выполняет параметризованный SQL-запрос и возвращает объект ResultSet.
executeUpdate(): Выполняет параметризованный SQL-запрос и возвращает количество затронутых строк.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍181🤔1
🤔 Какие типы данных бывают в java?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥3
🤔 Опиши основные этапы работы с базой данных с использованием JDBC?

Работа с базой данных с использованием JDBC включает несколько основных этапов. Эти этапы охватывают все необходимые действия, начиная от установки соединения с базой данных и заканчивая закрытием всех используемых ресурсов.

🟠Загрузка драйвера JDBC
Для того чтобы ваше приложение могло взаимодействовать с конкретной базой данных, необходимо загрузить соответствующий драйвер JDBC. В современных версиях Java (JDBC 4.0 и выше) драйвер загружается автоматически, если он находится в classpath. В более старых версиях требовалось явное указание загрузки драйвера с помощью Class.forName().
// Для современных версий Java (JDBC 4.0 и выше) это не обязательно
Class.forName("com.mysql.cj.jdbc.Driver");


🟠Установка соединения с базой данных
Создается соединение с базой данных с помощью класса DriverManager и метода getConnection(). Этот метод принимает URL базы данных, имя пользователя и пароль.
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "myusername";
String password = "mypassword";

Connection connection = DriverManager.getConnection(url, username, password);


🟠Создание объекта `Statement` или `PreparedStatement`
Для выполнения SQL-запросов необходимо создать объект Statement или PreparedStatement. PreparedStatement предпочтительнее для параметризованных запросов, так как он защищает от SQL-инъекций и может быть более производительным при многократном выполнении одного и того же запроса.
// Создание Statement
Statement stmt = connection.createStatement();

// Создание PreparedStatement
String sql = "SELECT * FROM employees WHERE department = ?";
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setString(1, "HR");


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93
🤔 Почему Map стоит особняком в иерархии коллекций?

Map не реализует интерфейс Collection, так как предназначен для хранения пар ключ-значение? Его структура ориентирована на быстрый доступ по ключу, что отличает его от других коллекций, работающих с последовательностями или множествами? Это делает Map уникальным инструментом для задач ассоциативного хранения данных?

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
🤔 Как зарегистрировать драйвер JDBC?

Это процесс, который позволяет Java-приложению использовать определенный драйвер для подключения к базе данных. В современных версиях JDBC (начиная с JDBC 4.0), драйверы регистрируются автоматически при наличии их в classpath. Однако, для понимания процесса регистрации и для старых версий JDBC, рассмотрим оба способа регистрации драйвера JDBC.

🚩Современный способ (JDBC 4.0 и выше)

В JDBC 4.0 и выше, драйверы автоматически регистрируются с использованием механизма Service Provider Interface (SPI). Это означает, что если драйвер находится в classpath, он будет автоматически зарегистрирован, и вам не нужно явно вызывать Class.forName(). Просто добавьте JAR-файл драйвера в classpath вашего проекта, и вы можете сразу устанавливать соединение:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JdbcExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "myusername";
String password = "mypassword";

try {
// Установка соединения с базой данных
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println("Соединение установлено!");

// Ваш код для работы с базой данных

// Закрытие соединения
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}


🚩Старый способ (до JDBC 4.0)

До JDBC 4.0 драйверы не регистрировались автоматически, и необходимо было явно загружать драйвер с использованием Class.forName(). Это гарантирует, что драйвер будет зарегистрирован с DriverManager.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JdbcExampleOld {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "myusername";
String password = "mypassword";

try {
// Регистрация драйвера
Class.forName("com.mysql.cj.jdbc.Driver");

// Установка соединения с базой данных
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println("Соединение установлено!");

// Ваш код для работы с базой данных

// Закрытие соединения
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
🤔 Что такое ООП?

ООП (Объектно-Ориентированное Программирование) — это парадигма программирования, основанная на концепции объектов, которые содержат данные и методы для их обработки. Основными принципами ООП являются инкапсуляция, наследование, полиморфизм и абстракция. ООП помогает создавать гибкие, расширяемые и модульные программы. В Java все элементы программирования реализованы через объекты и классы, что делает её строго объектно-ориентированным языком.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥1
🤔 Какие уровни изоляции транзакций поддерживаются в JDBC?

🟠TRANSACTION_NONE
Не поддерживается управление транзакциями.

🟠TRANSACTION_READ_UNCOMMITTED
Позволяет чтение незафиксированных изменений, возможны грязные чтения.

🟠TRANSACTION_READ_COMMITTED
Предотвращает грязные чтения, данные читаются только после фиксации.

🟠TRANSACTION_REPEATABLE_READ
Гарантирует повторяемость чтений, предотвращает грязные и неповторяемые чтения.

🟠TRANSACTION_SERIALIZABLE
Самый высокий уровень изоляции, предотвращает грязные, неповторяемые чтения и фантомные записи.

🚩Пример установки уровня изоляции

connection.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
🤔 В чём разница между примитивом и ссылочным типом данных?

Примитивные типы данных в Java (int, boolean, char и др.) хранят непосредственно значения, тогда как ссылочные типы (объекты и массивы) хранят ссылки на объекты в памяти. Примитивные типы располагаются в стеке и не могут быть null, в отличие от ссылочных, которые размещаются в куче и могут быть null. Примитивные типы имеют фиксированный размер, тогда как размер ссылочных зависит от структуры объекта. Примитивы быстрее по сравнению с ссылочными типами из-за отсутствия накладных расходов на управление памятью.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥2
🤔 При помощи чего формируются запросы к базе данных?

🟠Statement
Для простых запросов.

🟠PreparedStatement
Для параметризованных и повторяемых запросов.

🟠CallableStatement
Для вызова хранимых процедур.

🚩Пример использования

// Statement
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM employees");

// PreparedStatement
PreparedStatement pstmt = connection.prepareStatement("SELECT * FROM employees WHERE id = ?");
pstmt.setInt(1, 1);
ResultSet rs = pstmt.executeQuery();

// CallableStatement
CallableStatement cstmt = connection.prepareCall("{call myStoredProc(?)}");
cstmt.setInt(1, 1);
ResultSet rs = cstmt.executeQuery();


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51