• Возможно ли использование REST в GUI приложениях?

    @guras256
    для начала поясни, что ты хочешь передавать и в каких количествах.
    Обычно rest api и http в целом подразумевает клиент серверную модель, то есть все запросы идут на сервер. Использовать http для транспорта между двумя клиентскими приложениями напрямую ... мягко говоря странно)
    Ответ написан
    Комментировать
  • Как добавить в БД (hibernate) элемент с внешним ключом без выборки для него объекта (по id)?

    @guras256
    "легального" способа я не знаю и вряд ли он есть. смысл Jpa в том, что ты работаешь в объектной модели, а не с sql запросами.
    ты можешь присылать запрос с фронтенда в виде:
    {
      "name": "some name",
      "a": {
        "id": 1
      }
    }

    и все будет хорошо работать

    так же рекомендую сделать связь unidirectional, то есть поместить в A
    @JsonIgnore
        @OneToMany(mappedBy = "a")
        private List<BEntity> bs;


    в общем зависит от целей и необходимостей.
    Если ты хочешь получать именно id, то ты просто используешь инструмент не по назначению, бери myBatis и пиши sql.

    А если хочешь упороться, поставь transient поле в класс BEntity и перекладывай из него в AEntity -_- :
    @Entity
    @Table(name = "b")
    public class BEntity {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
    
        @ManyToOne
        @JoinColumn(name = "a_id", nullable = false)
        @JsonIgnore
        private AEntity a;
    
        @Transient
        private Long aEntityId;
    
        @Column(name = "name", nullable = false)
        private String name;
    }
    
    // получаешь ответ с фронденда:
    BEntity b = getBEntity();
    // Создаешь AEntity
    AEntity a = new AEntity();
    // запихиваешь в нее нужный id из транзаент поля
    a.setId(b.getAEntityId());
    //засовываешь А в Б
    b.setA(a);
    // можно сохранять


    но это вариант из разряда идиотизма

    в общем спрашивай, если будут еще вопросы
    Ответ написан
    5 комментариев
  • Почему вылетает ошибка MalformedJsonException,?

    @guras256
    Странный вопрос. Вы пробовали вывести свой new String(data, "UTF-8") ?
    Что то мне подсказывает, что никакого json вы там не увидите
    Ответ написан
    Комментировать
  • Правильно ли создавать много POJO классов, для формирования json ответа?

    @guras256
    Да, это нормально. У вашего приложения есть api в состав которого входят сущности, с которыми вы работаете и которые вы возвращаете клиенту (причем внутреннее представление и внешняя модель могут отличаться).

    Чтобы избавиться от бойлерплейта с геттерами, сеттерами и прочим, используйте lombok

    /**
     * аннотация @Data добавит в байткод методы 
     * getString, setString, 
     * getAnotherString, setAnotherString, 
     * equals, hashcode, toString
     */
    @Data
    public class App {
        private String string;
        private String anotherString;
    }


    В этой библиотеке очень много удобных аннотаций. Для поддержки в среде idea можно установить lombok plugin
    Ответ написан
    Комментировать
  • Нужно ли запрещать git push origin master -f на уровне репозитория?

    @guras256
    На мой взгляд разработку следует вести в ветке develop (как ни странно). Таким образом единственный способ попадания кода в master - слив текущего develop в master.
    Таким образом в master всегда будет готовый, рабочий, вылизанный релиз, в то время как текущая разработка ведется в develop.

    Что касается вопроса
    1. запретить прямой push в master по хорошему надо, но когда возникнет форс мажор и нужно будет срочно что-то вкатить, один хрен полезете включать возможность пуша)
    2. реверт делают, что тут еще делать)
    Ответ написан
  • Как лучше оформить java code?

    @guras256
    Прокачанный восьмой джавой вариант предыдущего оратора =)

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

    Ну и лучше особо восьмой джавой не увлекаться, даже этот пример сквозит стримозом головного мозга и порождает кучу лишних объектов =)

    public class App {
    
        private static Map<String, Runnable> actionMap = new HashMap<>();
        private static Runnable defaultAction = App::defaultActionMethod;
        static {
            actionMap.put("Выбор", App::choice);
            actionMap.put("МультиВыбор", App::multipleChoice);
            actionMap.put("yetanotherSubString", App::yetAnotherSubString);
        }
    
        private static void choice() {
            System.out.println("doSomething");
        }
    
        private static void multipleChoice() {
            System.out.println("doThisOrThat");
        }
    
        private static void yetAnotherSubString() {
            System.out.println("doYetAnotherSomething");
        }
    
        private static void defaultActionMethod() {
            System.out.println("Action not found.");
        }
    
        public static void main(String[] args) {
            String[] cases = {"Выбор", "МультиВыбор", "yetanotherSubString", "йуцйцуйцу"};
            Stream.of(cases)
                    .map(actionMap::get)
                    .map(Optional::ofNullable)
                    .forEach(runnable -> runnable.orElse(defaultAction).run());
        }
    }

    doSomething
    doThisOrThat
    doYetAnotherSomething
    Action not found.
    Ответ написан
    Комментировать