Лучшие практики для сохранения внутренних сущностей - PullRequest
0 голосов
/ 07 декабря 2018

Домен
Driver может иметь User, но он не нужен.Ассоциация является ненаправленной.

class Driver {
    private String firstName;
    private String lastName;

    @OneToOne
    private User user;

    // ...
} 

class User {
    private String login;
    private String email;

    // ...
} 

Варианты использования:
1. Создание Driver и User для Driver.
2. Назначение другого User для Driver.

Какое решение лучше?

ИСПОЛЬЗОВАНИЕ СЛУЧАЙ 1:

Вариант 1:

создайте Driver и User с 1 json:

{
    "DriverDto": {
        "firstName": "Adam",
        "lastName": "Kowalski",
        "UserDto": {
            "login": "mylogin",
            "email": "myemail@com.pl"
        }
     }
}

, затем проверьте сервис, если User с таким логином уже существует, если нет, сохраните его.Следующая служба назначает User на Driver и сохраняет Driver.

Вариант 2:

сначала создайте User:

{
     "UserDto": {
            "login": "mylogin",
            "email": "myemail@com.pl"
        }
}

, затем создайте Driver и передайте User в Driver только с идентификаторомUser:

{
    "DriverDto": {
        "firstName": "Adam",
        "lastName": "Kowalski",
        "UserDto": {
            "id": 1
        }
     }
}

ИСПОЛЬЗОВАНИЕ СЛУЧАЯ 2:

Опция 1:

, чтобы назначить другого пользователя для драйвера, должен сделать запрос на поставку с помощью json:

{
    "DriverDto": {
        "firstName": "Adam",
        "lastName": "Kowalski",
        "UserDto": {
            "login": "anotherlogin",
            "email": "anotheremail@com.pl"
        }
     }
}

, затем Сервис проверяет, существует ли Пользователь, если нет, сохраните его и установите для Водителя нового пользователя и сохраните новый Драйвер.

Вариант 2:

simillar как Вариант 1, но вместо прохождения целого User мы передаем только идентификатор User:

 {
    "DriverDto": {
        "firstName": "Adam",
        "lastName": "Kowalski",
        "UserDto": {
            "id": 2
        }
     }
}

Вариант 3:

сделать новый http-запрос:
...api/drivers/id=1/assignuser/id=1

Option 4:

сделать новый http-запрос:
...api/drivers/id=1/assignuser и передать идентификатор User в формате json:

{
    "UserDto": {
        "id": 1
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...