Как стать автором
Обновить

Комментарии 8

Как-то глупо у вас реализовано, почему никакого автосоздания connection?
Ваш же код только первый раз без ошибки отработает, потом вы подключение закрыли, а новое не получаете и из дочерних классов получать не должны по вашей же задумке. Но тк отдавая connection в пул вы его не nullите, работать будет до тех пор пока пул его не убьет…
Чем именно это отличается от классического репозитория?
PreparedStatement ps = getPrepareStatement(SELECT_ALL_PLANET);

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

connectionPool = ConnectionPool.getConnectionPool();

Статический метод возвращающий connectionPool? Очень плохая идея, таким образом тестирование становится очень сложным, а классы сильно связанными, лучше передавать его как параметр конструктора или вообще через Dependency injection.

} catch (SQLException e) {
                e.printStackTrace();
            }

Не надо так писать, если есть exception его нужно прокинуть выше или хотя бы залогировать (но сделать свой exception и прокинуть его дальше намного лучше). Понятно что пример, но не стоит учить плохому…

public boolean delete(Integer id)
boolean create(Planet entity)

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

public boolean delete(Integer id) {
        return false;
    }

Если метод ещё не готов лучше намного лучше кидать unchecked exception, вроде UnsupportedOperationException.

P.S. Автор, замечательно что вы пытаетесь писать статьи, но DAO классы были описаны уже несчетное количество раз в самых разных руководствах, в Java уже лет 10 «мода» на другие presistance способы, вроде JAP или SQL шаблонизаторов, таких как JOOQ, QueryDSL, тем более не стоит давать примеры с ошибками, ведь по ним кто-то может учиться.
List<User> lst = new LinkedList<>(); 


Всегда используйте ArrayList(Ожидаемый_размер_коллекции) вместо LinkedList для создания List, ребята из Oracla занимающиеся производительностью JVM говорили что производительность LinkedList на практике всегда хуже чем у ArrayList.
Те кто поставили минус можете объяснить с чем именно выше вы несогласны? Мне реально интересно может вы знаете больше о LinkedList…
getPrepareStatement и closePrepareStatement как protected смотрелись бы лучше
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории