Wpis z mikrobloga

#spring #springboot
#java
Powiedzcie mi jak unika się podejścia encja na twarz?

Wymyśliłem coś takiego nie wiem czy to jest dobre.

Mam w bazie encje przedstawioną w kodzie mniej więcej tak:

@ Entity
class RoomEntity{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@ NotNull @ NotEmpty
Sting name;
}

mapuje ją sobie na "obiekt domenowy"

'class Room{
private Long id;
Name name;
}'

do tego DTO typu

'class RoomDTO{
private Long id;
Name name;
}'

Zarówno klasa Room jak i Name będą stworzone tak, że nie ma "gołych" setterów tylko są metody dostępowe, które robią validacje odpowiednią

no i kod servisu wyglądałby wtedy mniej więcej tak:

'def create(RoomDTO dto){
Room room = mapper.mapToDomainObject(dto);
{validacja i inna logika hehe biznesowa, jak jest jakiś błąd to leci wyjątek obsługiwany w jakimś handlerze i rzucany odpowiedni JSON z powodem erroru};
//tutaj object już jest git można go zapisać
entity = mapper.mapToEntity(room):
save(entity);
}'
  • 5
@krasnoludkolo:

dobra widzę, że się walnąłem bo mam id w DTO, a ono powinno być autogenerowane na samym dole na poziomie encji
walidacja typu @ NotNull @ NotEmpty też powinna być na DTO
nie wiem co jeszcze w sumie
sam pomysł robienia tego pośredniego obiektu pomiędzy DTO, a encją jest dobry?