배경
컬럼에 json을 넣을일이 많지는 않지만 가끔 생길수도 있다. 근데 jpa에서 쓰려면 Jacson + 직렬화가 필요하다. 제네릭 converter를 사용해서 직렬화 / 역직렬화 하는 converter을 사용해도 되지만 더 간단한 방법이 있다.
일단 이거를 추가해줍니다.
// json -> jpa
implementation("com.vladmihalcea:hibernate-types-52:2.16.2")
엔티티
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Getter
@TypeDef(name = "json", typeClass = JsonType.class). -> 이거를 추가해주고
public class Member extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "member_seq")
private Long seq;
...
// 이렇게 하면 json을 사용가능하다. - 그리고 객체로 받기 때문에 쉽게 객체를 사용할 수 있다.
@Type(type = "json")
@Column(columnDefinition = "json")
private List<Book> books;
...
그리고 기존의 요청과 똑같이 하면 된다.
POST {{host_api}}/...
Content-Type: application/json
{
...
"books": [
{
"title": "sdf",
"price": 100
},
{
"title": "sdf",
"price": 100
}
]
}
위와 같이 잘 들어가는것을 볼 수 있고
조회도 잘 되는것을 볼 수 있다.
'spring boot > 기술 적용' 카테고리의 다른 글
jpa comment를 custom annotation으로 만들기 (0) | 2022.07.20 |
---|---|
stub, mock, spy 비교 (0) | 2022.07.02 |
fetchJoin과 pagination을 같이 사용할 때 (0) | 2022.06.24 |
MultipleBagFetchException 발생시 - fetchJoin 여러개 썼을 때 (0) | 2022.06.24 |
@Transactional의 정의, 같은 클래스에서 호출, 예외처리 (0) | 2022.06.22 |