Изучение Java. Направление. Проект. Чем пользуюсь.
После первого поста прошел месяц, не мог что-то выложить, было много работы и начал работу на ТЗ которое прислали через неделю после поста.
Начну по порядку. Цель конечно же стать разработчиком, как говорится войти в айти. Мое образование не профильное, и поэтому курсы от некоторых компаний мне закрыты, т.к набирают ребят и ВУЗов. Пообщавшись с друзьями(программистами) они ответили на мой вопрос что мне нужно знать чтобы стать джуном. Так же посмотрев компаний у которых есть открытие вакансии на эти позиции, выяснил что необходимы знания по Spring Framework, работа с БД(JDBC, Hibernate, и так же стоит ознакомиться с пуллом соединение HikariCP), JSP, сервлеты.
Свой проект начал делать в момент прохождения книги Spring in action. Суть проекта веб приложение, в которое пользователь логинится и может добавлять ссылки и добавлять к ним описание(аналог закладок в браузере). Почему именно это? сам часто сталкиваюсь с проблемой что что-то нашел полезное для себя сидя на работе, а дома необходимо это посмотреть. Самый простой выход, это конечно использовать одну учетную запись в браузере, но мне этот метод не подходит, т.к их много как рабочих так и личных и не хочу это объединять. Сейчас просто отправляю сообщение себе в телегу.
Сейчас проект в непотребном виде, буду переделывать т.к из-за того что у меня есть проблема с восприятием реляционных БД, решил использовать noSQL базу MongoDB. Информации о связке MongoDB + Spring много, но чтобы начало работать т.к описывают люди еще понимания не достаточно, посидел пару недель мне удалось часть функционала реализовать. Но столкнулся с проблемой обновления данных в noSQL, т.к данные хранятся в виде JSON объектов, для их обновления в БД необходимо проделать не так мало действий:
1 - Забираем объект из базы
2 - Из полученного объекта создаем java объект
3 - Вносим в него изменения
4 - Удаляем старый объект
5 - Вставляем новый
Слишком много итераций для мелких правок это плохо, и как сказали что это очень плохое использование noSQL, дословно *не парь мозг, учи SQL и делай*
Под обновлением полей имеется ввиду не правка полей, а CRUD операции в массиве объекта который он в себе хранит.
Поэтому я перенес проект с MongoDB в отдельный репозиторий и поставил PostgreSQL, перелопатил DAO слой приложения, но не до конца и сейчас оно не работает.
Чтобы я мог работать с приложением с разных пк и с одной базой, выбрал способ создать базу на удаленном сервере, выбор пал на сервис heroku, кто не слышал о нем расскажу коротко.
Heroku это PaaS платформа, на ней можно развернуть свое приложение. Создаешь базу, в проекте делаешь коннект к ней, есть 2 способа делать деплой, 1 - ты указываешь на свой репозиторий на gitHub, 2 - с помощью их CLI. Я подключил репозиторий с гита и когда я делаю пуш, heroku это видит, подтягивает изменения и делает повторно сборку проекта.
До JSP я еще не добрался, поэтому чтобы сейчас уже проверять как мапится запрос, я использую postman, отправляю POST/GET запросы через него.
В следующем посте речь будет о проекте что и как делал.
Буду рад конструктивной критике.
Спасибо всем кому стало интересно!