Ответы пользователя по тегу Java
  • Как решить javax.persistence.EntityExistsException в Hibernate?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    LikeKey,
    очень полезные ресурсы по каскадам
    https://www.baeldung.com/jpa-cascade-types
    https://vladmihalcea.com/a-beginners-guide-to-jpa-...
    Ответ написан
    Комментировать
  • Как выучить java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Возможно ли самостоятельно освоить профессию?

    Да, возможно.

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

    Вы отметили, что хотите стать андроид разработчиком, но для этого вам скорее нужно изучить язык Kotlin, а не Java. Но настоятельно рекомендуется знание Java тоже.
    Так что вы можете сразу начать изучение языка Kotlin, а затем уже Android API или же вы можете начать изучение с Java, затем переключиться на Kotlin и изучить Android.

    Отмечу, что знаний Java (или Kotlin) для разработки на андроид недостаточно. Например, вам нужно изучить основы работы с SQL для запросов в БД. Нужно также уделить время на базовые вещи, например, принципы ООП, паттерны проектирования (GRASP, GoF) и алгоритмы.

    В идеале можно найти ментора, который будет контролировать ваш процесс обучения, т.е. по факту это не преподаватель, а просто консультант. Это нужно, чтобы некто делал код ревью и указывал на ваши ошибки. Есть телеграм каналы, где можно найти добровольцев на эту роль, а можно найти на платной основе.

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

    Что касается изучения Java, то рекомендую начать с книг.
    Например,
    Г. Шилдт - Полное руководство по Java (можно начать с этой книги)
    Б. Эккель - Философия Java (лучше до него прочитать что-то попроще)

    Из видеоканалов могу рекомедовать следующие:
    Java
    Android
    Android_2
    Можете глянуть на курсы на сайте Udemy. Они относительно дешевые, в среднем - (от 10 у.е до 20 у.е.). Встречаются довольно хорошие курсы, особенно на английском.

    Проверить свои скиллы можно на сайтах:
    HackerRank
    LeetCode

    Хорошие статьи встречаются на Хабр и JavaRush. Для начала этих знаний должно быть достаточно.
    Ответ написан
    Комментировать
  • Верно ли я указал наследование в Java проекте?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Не верно.
    Легче понять вашу ошибку, если проговорить словами код написанный вами.
    Вот, ваш код:
    public class University{}
    public class Faculty extends University {}
    public class Group extends Faculty {}
    public class Student extends Group {}

    Итак, вы говорите, что есть некий Университет
    Факультет РАСШИРЯЕТ Университет. Уже нестыковка. Ведь, в Университете ИМЕЮТСЯ Факультеты. Далее вы говорите, что Группа расширяет Факультет. Что тоже нелогично, ибо каждый факультет ВКЛЮЧАЕТ в себя группы.
    Дальше вы говорите, что Студент расширяет класс Группы. Тоже ведь, нелогично, так как каждая группа содержит в себе некоторое количество студентов.

    Более корректным будет следующая реализация:
    public class University {
    private List<Faculty> faculties;
    }
    public class Faculty{
    private List<Group> groups;
    }
    public class Group{
    private List<Student> students;
    }
    public class Student {}

    Притом вместо List можно использовать Set, так как каждый факультет уникален, также как и группа и студенты.
    Ответ написан
    1 комментарий
  • Что значит метод Payload из javax.validation.Payload?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Это по сути тоже сужает действие, но позволяет применить к кастомным Constraint'ам
    https://docs.jboss.org/hibernate/validator/4.1/ref...
    6031262181841223775751.png
    https://beanvalidation.org/1.1/spec/
    Payloads are typically used by validation clients to associate some metadata information with a given constraint declaration. Payloads are typically non-portable. Describing payloads as interface extensions as opposed to a string-based approach allows an easier and more type-safe approach.
    Ответ написан
    Комментировать
  • Насколько актуален LibGDX?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Если вы хотите профессионально заняться разработкой игр, то лучше изучать c# (unity) или c++ (unreal engine).
    Если на Java хотите поиграться, то libgdx
    Ответ написан
    Комментировать
  • Как работать с localeStorage в Spring приложении?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    localStorage это хранилище на клиентской стороне и соответственно к backend не имеет никакого отношения.
    Вы лишь можете при помощи js отправлять данные сохраненные в ls или получать данные из бек-энд и сохранять в ls при помощи js
    Ответ написан
    Комментировать
  • Есть ли необходимость связывать сущности в БД, если я их связываю через spring data jpa в коде?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    название транспорта, фамилии рабочих, инстанции, фамилия агента, фамилия заказчика.

    Скорее всего это должно быть не одной таблицей, а несколькими, так как это разные сущности.
    Т.е. Журнал может содержать в себе сущность пользователя (сущности - агент, заказчик). А далее уже используя связи OneToOne OneToMany ManyToOne ManyToMany нужно связать эти сущности между собой.

    Стоит ли заморачиваться, и связывать через ключи таблицы в sql или можно это связать в самом коде через аннотации?

    Аннотации сделают это за вас. В данном случае вы пишете по принципу code first и соответственно, вся логика создания ddl должна быть в коде.

    Какие могут быть последствия такой связи?

    Ну например, некорректное выставление каскадных типов.

    Какие есть нюансы?

    Будет сложно пересказать нюансы с учетом общности вопроса. Прочитайте документацию к Spring Data JPA и станет яснее.
    Ответ написан
    Комментировать
  • Как правильно организовать код на Java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Используйте асинхронные запросы.
    Для запросов используйте Retrofit. Для сериализации и десериализации JSON можете использовать GSON или Jackson. Кстати, для асинхронщины можете глянуть на RxJava
    Таким образом первый вариант предпочтителен.
    Ответ написан
    Комментировать
  • За какое время можно стать Java Junior Developer?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Действительно все относительно и это зависит от вас. В среднем думаю, что 1 года достаточно.
    За 1 год можно изучить Java SE, Java EE, Spring Framework, Hibernate, JDBC, JSP, JSTL, RESTful, MVC, Design Patterns, . Основы SQL. Пожалуй, это минимум для Джуна. Я и сам джун.
    Ответ написан
    Комментировать
  • Как правильно скомпилировать java проект?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Там есть файл pom.xml, а это значит, что это проект Maven
    mvn clean package
    Ответ написан
  • Как ввести n чисел и вывести их?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Я лишь дополню советы, которые вам уже дали.
    Вот, документация по сканеру:
    https://vertex-academy.com/tutorials/ru/rabota-so-...

    Алгоритм реализации вашей задачи:
    - создайте цикл while с каким-нибудь условием.
    - используйте класс Scanner, чтобы получить числа из потока. Обратите внимание на nextLine() nextInt() nextDouble()
    - каждое полученное число добавляете в коллекцию. Например, List<Long> List<Double> List<Integer>
    - если пользователь ввел например, exit, то устанавливаете значение условия в цикле while на false и выходится из режима ввода
    - итерируете по коллекции чисел и делаете System.out.println()

    Думаю, этого достаточно, чтобы вы написали код. Писать код не буду, ибо вы должны научиться делать это сами
    Ответ написан
    Комментировать
  • Как изучить Socket?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Ибо я хочу изучить эту тему, а нормального ничего не могу найти.

    Пробовали погуглить?
    https://javarush.ru/groups/posts/654-klassih-socke...
    https://www.baeldung.com/a-guide-to-java-sockets
    https://www.youtube.com/watch?v=BWjGQlIkgT4
    https://www.youtube.com/watch?v=-xKgxqG411c
    Google
    Ответ написан
    Комментировать
  • Как работает Spring Security JWT?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Здравствуйте!
    Вот, пример Spring Security JWT
    https://github.com/hantsy/spring-webmvc-jwt-sample
    Вот, тут схематическое изображение того, как JWT AUTH работает
    https://www.javainuse.com/spring/boot-jwt
    Надеюсь, что смог помочь вам
    Ответ написан
    Комментировать
  • Почему присходит ошибка при конвертации json в Java объект (библиотека gson)?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    У вас структура объекта некорректная.
    Вот, посмотрите на эту
    -----------------------------------com.example.Clouds.java-----------------------------------
    
    package com.example;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Clouds {
    
    @SerializedName("all")
    @Expose
    public int all;
    
    }
    -----------------------------------com.example.Coord.java-----------------------------------
    
    package com.example;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Coord {
    
    @SerializedName("lon")
    @Expose
    public double lon;
    @SerializedName("lat")
    @Expose
    public double lat;
    
    }
    -----------------------------------com.example.Example.java-----------------------------------
    
    package com.example;
    
    import java.util.List;
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Example {
    
    @SerializedName("coord")
    @Expose
    public Coord coord;
    @SerializedName("weather")
    @Expose
    public List<Weather> weather = null;
    @SerializedName("base")
    @Expose
    public String base;
    @SerializedName("main")
    @Expose
    public Main main;
    @SerializedName("visibility")
    @Expose
    public int visibility;
    @SerializedName("wind")
    @Expose
    public Wind wind;
    @SerializedName("clouds")
    @Expose
    public Clouds clouds;
    @SerializedName("dt")
    @Expose
    public int dt;
    @SerializedName("sys")
    @Expose
    public Sys sys;
    @SerializedName("timezone")
    @Expose
    public int timezone;
    @SerializedName("id")
    @Expose
    public int id;
    @SerializedName("name")
    @Expose
    public String name;
    @SerializedName("cod")
    @Expose
    public int cod;
    
    }
    -----------------------------------com.example.Main.java-----------------------------------
    
    package com.example;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Main {
    
    @SerializedName("temp")
    @Expose
    public double temp;
    @SerializedName("feels_like")
    @Expose
    public double feelsLike;
    @SerializedName("temp_min")
    @Expose
    public double tempMin;
    @SerializedName("temp_max")
    @Expose
    public double tempMax;
    @SerializedName("pressure")
    @Expose
    public int pressure;
    @SerializedName("humidity")
    @Expose
    public int humidity;
    
    }
    -----------------------------------com.example.Sys.java-----------------------------------
    
    package com.example;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Sys {
    
    @SerializedName("type")
    @Expose
    public int type;
    @SerializedName("id")
    @Expose
    public int id;
    @SerializedName("country")
    @Expose
    public String country;
    @SerializedName("sunrise")
    @Expose
    public int sunrise;
    @SerializedName("sunset")
    @Expose
    public int sunset;
    
    }
    -----------------------------------com.example.Weather.java-----------------------------------
    
    package com.example;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Weather {
    
    @SerializedName("id")
    @Expose
    public int id;
    @SerializedName("main")
    @Expose
    public String main;
    @SerializedName("description")
    @Expose
    public String description;
    @SerializedName("icon")
    @Expose
    public String icon;
    
    }
    -----------------------------------com.example.Wind.java-----------------------------------
    
    package com.example;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Wind {
    
    @SerializedName("speed")
    @Expose
    public int speed;
    @SerializedName("deg")
    @Expose
    public int deg;
    
    }

    Сгенерировано из - www.jsonschema2pojo.org
    Ответ написан
    Комментировать
  • Почему иногда данные получаю а иногда нет, хотя код не меняю?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Первое, что скажу я это то, что не очень-то хорошая идея для получения прогноза погоды использовать парсер (Jsoup или любой другой).
    Используйте API сервисов предназначенных для этого. Например, OpenWeatherMap

    Далее ответ на ваш вопрос:
    Почему иногда данные получаю а иногда нет, хотя код не меняю?

    Может быть вы и не меняете код написанный вами, но сама страница (DOM) сайта может измениться из-за чего вы наблюдаете ошибку
    Ответ написан
    Комментировать
  • Что почитать по архитектурным шаблонам проектирования?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Есть курс на FoxMinded Enterprise Patterns - https://foxminded.com.ua/enterprise-patterns-advan...
    Не знаю насколько хорошим этот курс является, но думаю, что это может вам чем-то помочь
    Ответ написан
    Комментировать
  • Где можно найти бесплатные задание?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Ответ написан
    Комментировать
  • Как сделать запрос на OpenWeatherMap и обработать ответ в формате JSON?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Вот, тут документация по API OpenWeatherMap - https://rapidapi.com/community/api/open-weather-map
    Вот, либа для запросов Retrofit - https://square.github.io/retrofit/
    Вот, либы для десериализации Json в объект (Jackson, Gson) -
    https://www.baeldung.com/jackson
    https://www.baeldung.com/jackson-vs-gson
    Остается теперь, лишь изучить API по документации, выоплнить запрос используя Retrofit и десериализовать json в объект используя jackson || gson
    Ответ написан
  • Как можно защитить проект на Java от простого копирования?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Признаюсь, этот вопрос интересует меня так же.
    Если бы мне пришлось реализовывать подобное, то я:
    - решил бы вопрос юридически
    - провел бы обфускацию кода ( https://www.guardsquare.com/en/products/proguard )
    - для использования софта использовал бы активацию на собственном сервере
    - при активации софта учитывал бы определенные системные параметры (id железа и т.д.) и сохранил бы на своем сервере при активации софта.
    Ответ написан
    Комментировать
  • Как реализовать игровое поле?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Для разработки игр используйте следующие движки или библиотеки:
    https://libgdx.badlogicgames.com/
    https://www.lwjgl.org/
    https://jmonkeyengine.org/
    Ответ написан
    Комментировать