Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9f2a888

Browse files
Update TicketDao.java to improve visibility
1 parent 762dbfb commit 9f2a888

File tree

1 file changed

+47
-74
lines changed
  • DaoEntityMappingLess/src/DAOLessonsTwo/flight_repository_dao

1 file changed

+47
-74
lines changed

‎DaoEntityMappingLess/src/DAOLessonsTwo/flight_repository_dao/TicketDao.java‎

Lines changed: 47 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -24,43 +24,36 @@
2424
будет реализован как Singleton.
2525
*/
2626
public class TicketDao implements Dao<Long, Ticket>{
27-
// Переменная экземпляра объекта
28-
private static TicketDao INSTANCE;
29-
// Пустой приватный конструктор
27+
28+
private static TicketDao INSTANCE; // Переменная экземпляра объекта
29+
30+
/* Пустой приватный конструктор */
3031
private TicketDao() {
3132
}
32-
/*
33-
Метод позволяющий инициализировать
34-
единственный объект класса TicketDao
35-
*/
33+
34+
/* Метод позволяющий инициализировать единственный объект класса TicketDao */
3635
public static TicketDao getInstance() {
3736
if (INSTANCE == null){
3837
INSTANCE = new TicketDao();
3938
}
4039
return INSTANCE;
4140
}
42-
/* Получаем экземпляр класса FlightDao */
43-
private final FlightDao flightDao = FlightDao.getInstance();
44-
/*
45-
SQL запрос на удаление одной записи из таблицы
46-
Ticket по ID в формате PrepareStatement
47-
*/
41+
42+
private final FlightDao flightDao = FlightDao.getInstance(); // Получаем экземпляр класса FlightDao
43+
44+
/* SQL запрос на удаление одной записи из таблицы Ticket по ID в формате PrepareStatement */
4845
private static final String DELETE_SQL = """
4946
DELETE FROM flight_repository.ticket
5047
WHERE id = ?
5148
""";
52-
/*
53-
SQL запрос на вставку одной записи в таблицу
54-
Ticket в формате PrepareStatement
55-
*/
49+
50+
/* SQL запрос на вставку одной записи в таблицу Ticket в формате PrepareStatement */
5651
private static final String SAVE_SQL = """
5752
INSERT INTO flight_repository.ticket (passenger_no, passenger_name, flight_id, seat_no, cost)
5853
VALUES (?, ?, ?, ?, ?);
5954
""";
60-
/*
61-
SQL запрос на изменение одной записи в таблице
62-
Ticket по ID в формате PrepareStatement
63-
*/
55+
56+
/* SQL запрос на изменение одной записи в таблице Ticket по ID в формате PrepareStatement */
6457
private static final String UPDATE_SQL = """
6558
UPDATE flight_repository.ticket
6659
SET passenger_no = ?,
@@ -70,6 +63,7 @@ public static TicketDao getInstance() {
7063
cost = ?
7164
WHERE id = ?
7265
""";
66+
7367
/* SQL запрос на получение всех записей из таблицы Ticket */
7468
private static final String FIND_ALL_SQL = """
7569
SELECT t.id,
@@ -89,75 +83,57 @@ public static TicketDao getInstance() {
8983
JOIN flight_repository.flight AS f
9084
ON t.flight_id = f.id
9185
""";
92-
/*
93-
SQL запрос на получение данных одной записи в
94-
таблице Ticket по ID в формате PrepareStatement
95-
*/
86+
87+
/* SQL запрос на получение данных одной записи в таблице Ticket по ID в формате PrepareStatement */
9688
private static final String FIND_BY_ID_SQL = FIND_ALL_SQL + """
9789
WHERE t.id = ?
9890
""";
91+
9992
/*
100-
Метод для работы с FIND_ALL_SQL запросом. Перегруженный метод
101-
*.findAll(TicketFilter filter) приведен в самом низу данного
102-
класса, он принимает в качестве аргументов ссылку на
103-
TicketFilter - Data Transfer Object (DTO) — один из шаблонов
104-
проектирования, используется для передачи данных между
105-
подсистемами (слоями) приложения. Data Transfer Object, в отличие
106-
от business object или data access object не должен содержать
107-
какого-либо поведения.
93+
Метод для работы с FIND_ALL_SQL запросом. Перегруженный метод *.findAll(TicketFilter filter) приведен в самом низу данного
94+
класса, он принимает в качестве аргументов ссылку на TicketFilter - Data Transfer Object (DTO) — один из шаблонов
95+
проектирования, используется для передачи данных между подсистемами (слоями) приложения. Data Transfer Object, в отличие
96+
от business object или data access object не должен содержать какого-либо поведения.
10897
*/
10998
public List<Ticket> findAll() {
11099
/* Устанавливаем связь с базой данных и готовим PrepareStatement объект */
111100
try (var connection =
112101
ConnectionPoolManager.getConnectionFromPool();
113102
var preparedStatement =
114103
connection.prepareStatement(FIND_ALL_SQL)) {
115-
/* Получаем результат запроса, как коллекцию SET */
116-
var resultSet = preparedStatement.executeQuery();
117-
/* Создаем список для хранения билетов полученных по запросу */
118-
List<Ticket> tickets = new ArrayList<>();
104+
105+
var resultSet = preparedStatement.executeQuery();// Получаем результат запроса, как коллекцию SET
106+
107+
List<Ticket> tickets = new ArrayList<>();// Создаем список для хранения билетов полученных по запросу
119108
while (resultSet.next()) {
120-
/* Загружаем полученный список в коллекцию*/
121-
tickets.add(buildTicket(resultSet));
109+
tickets.add(buildTicket(resultSet)); // Загружаем полученный список в коллекцию
122110
}
123-
/* Возвращаем результат */
124-
return tickets;
111+
return tickets; // Возвращаем результат
125112
} catch (SQLException throwables) {
126113
throw new DaoException(throwables);
127114
}
128115
}
129-
/*
130-
Метод для получения данных о билете по ID.
131-
Результат запроса неоднозначен, поскольку
132-
может быть запрошен ID которого нет в базе,
133-
отсюда и возвращаемый объект Optional.
116+
117+
/*
118+
Метод для получения данных о билете по ID. Результат запроса неоднозначен, поскольку
119+
может быть запрошен ID которого нет в базе, отсюда и возвращаемый объект Optional.
134120
*/
135121
public Optional<Ticket> findById(Long id) {
136122
/* Устанавливаем связь, передаем подготовленный FIND_BY_ID_SQL запрос */
137123
try (var connection =
138124
ConnectionPoolManager.getConnectionFromPool();
139125
var preparedStatement =
140126
connection.prepareStatement(FIND_BY_ID_SQL)) {
141-
/* Устанавливаем интересующий нас параметр в запрос */
142-
preparedStatement.setLong(1, id);
143-
/*
144-
Только после окончательного формирования запроса
145-
и установки всех параметров передаем запрос в базу
146-
данных
147-
*/
148-
var resultSet = preparedStatement.executeQuery();
149-
/* Создаем пустую ссылку на объект Ticket */
150-
Ticket ticket = null;
127+
128+
preparedStatement.setLong(1, id); // Устанавливаем нужный нам параметр в запрос (в данном случае первый параметр)
129+
var resultSet = preparedStatement.executeQuery(); //Только после окончательного формирования запроса и установки всех параметров передаем запрос в базу данных
130+
Ticket ticket = null; // Создаем пустую ссылку на объект Ticket
151131
if (resultSet.next()) {
152-
/*
153-
Инициализируем наш объект методом *.buildTicket()
154-
куда передали результат запроса
155-
*/
156-
ticket = buildTicket(resultSet);
132+
ticket = buildTicket(resultSet); // Инициализируем наш объект методом *.buildTicket() куда передали результат запроса
157133
}
134+
158135
/*
159-
Мы получаем объект, в котором может быть запрашиваемый объект —
160-
а может быть null. Но с Optional надо как-то работать дальше,
136+
Мы получаем объект, в котором может быть запрашиваемый объект — а может быть null. Но с Optional надо как-то работать дальше,
161137
нам нужна сущность, которую он содержит (или не содержит).
162138
163139
Cуществует всего три категории Optional:
@@ -167,14 +143,14 @@ public Optional<Ticket> findById(Long id) {
167143
Optional-объект.
168144
- Optional.empty - возвращает пустой Optional-объект.
169145
170-
Существует так же два метода, вытекающие из познания, существует
171-
обёрнутый объект или нет — isPresent() и ifPresent()
146+
Существует так же два метода, вытекающие из познания, существует обёрнутый объект или нет — isPresent() и ifPresent()
172147
*/
173148
return Optional.ofNullable(ticket);
174149
} catch (SQLException throwables) {
175150
throw new DaoException(throwables);
176151
}
177152
}
153+
178154
/* Метод для обновления сведений о билете */
179155
public void update(Ticket dataIn) {
180156
/* Создаем соединение с базой и передаем UPDATE_SQL запрос */
@@ -195,6 +171,7 @@ public void update(Ticket dataIn) {
195171
throw new DaoException(throwables);
196172
}
197173
}
174+
198175
/*
199176
Метод для сохранения данных нового билета в базе данных.
200177
Сам объект-билет передается в качестве параметра из которого
@@ -216,16 +193,12 @@ public Ticket save(Ticket dataIn) {
216193
preparedStatement.setLong(3, dataIn.getFlight().id());
217194
preparedStatement.setString(4, dataIn.getSeatNo());
218195
preparedStatement.setBigDecimal(5, dataIn.getCost());
219-
/* Отправляем запрос в базу */
220-
preparedStatement.executeUpdate();
221-
/* Получаем из базы вновь сгенерированный ID */
222-
var generatedKeys = preparedStatement.getGeneratedKeys();
196+
preparedStatement.executeUpdate(); // Отправляем запрос в базу
197+
var generatedKeys = preparedStatement.getGeneratedKeys(); // Получаем из базы вновь сгенерированный ID
223198
if (generatedKeys.next()) {
224-
/* Помещаем его в полученный Ticket объект */
225-
dataIn.setId(generatedKeys.getLong("id"));
199+
dataIn.setId(generatedKeys.getLong("id")); // Помещаем его в полученный Ticket объект
226200
}
227-
/* Возвращаем полный Ticket объект */
228-
return dataIn;
201+
return dataIn; // Возвращаем полный Ticket объект
229202
} catch (SQLException throwables) {
230203
throw new DaoException(throwables);
231204
}
@@ -432,4 +405,4 @@ public List<Ticket> findAll(TicketFilter filter) {
432405
throw new DaoException(throwables);
433406
}
434407
}
435-
}
408+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /