[TIL - 1029] Jackson을 사용하면서, 쿼리플랜의 중요성, Spring AOP로 트랜잭션 처리할 때 조심해야할 것
feature 개발 진행하면서 알게된 것들
- 책, 영상, 자료를 먼저 보고 파악한 내용이 아닌 실제 필요한 기능 개발을 하면서 알게된 것들 : 정말 소중한 경험을 하면서 얻게된 것들을 당분간 남길 것 같음
- Jackson json 파싱 기준(예제)
- 자바빈 규약을 지켜야함 : NoArgsConstructor, setter/getter
- [] 일 경우 array로 할지, List로 할지는 마음대로 하면 됨
{
"id": 123,
"name": "Pankaj",
"permanent": true,
"address": {
"street": "Albany Dr",
"city": "San Jose",
"zipcode": 95129
},
"phoneNumbers": [
123456,
987654
],
"role": "Manager",
"cities": [
"Los Angeles",
"New York"
],
"properties": {
"age": "29 years",
"salary": "1000 USD"
}
}
@Data
public class Employee {
private Long id;
private String name;
private boolean permanent;
private Address address;
private long[] phoneNumbers;
private String role;
private List<String> cities;
private Map<String, String> properties;
}
- Jackson 데이터가 없을 경우
- null이 아니라 size가 0
{
"DoTest": [
]
}
public class DoTest {
private List<SubTest> subTests;
}
- @Transactional 롤백 : RuntimeException에 대해서만 자동 rollback을 해주고, Unchecked Exception에 대해서는 설정해줘야함
- 쿼리 플랜 : 쿼리를 기능되게끔 짰다고 해서 그만인 것이 아니라 쿼리는 어떻게 해라라고 짜주지 않기 때문에 대신 짜주는 옵티마이져가 어떤 계획을 가지는지 확인해야함
- 풀스캔을 하고 있지 않은지, 잘못된 인덱스를 선택해서 검색하는 것은 아닌지 확인해야함
- 참고자료 남겨뒀다가 시간날 때 봐야지
> EXPLAIN SELECT * FROM group WHERE xxx_id = 1;