2023년 04월 12일

@VERO
Created Date · 2023년 04월 13일 00:04
Last Updated Date · 2023년 04월 13일 00:04

LOG

  • 깃짱이랑 자동차 API 미션을 완료했다!! 미션 완료는 항상 뿌듯하다. 깃짱은 스프링을 처음 해봤다고 했는데 이번 미션동안 잘 이해한 것 같아서 대단하다.
  • 컨디션이 안 좋았다. 아침에 일어날 때부터 목감기 걸린 것처럼 목이 아팠는데 낮에는 열이 났다. 주노가 타이레놀 주니까 좀 나았다. THANK YOU, JUNO... 그렇게 여기 있을 때까지는 좀 나았는데 집에 가니까 귀신같이 다시 열이 나서 약을 먹고 잤다. 열은 떨어진 것 같아 다행이다. 어제보다는 몸 상태가 나아졌다.

배운 것

  • JdbcTemplatebatchupdate
public void insertPlayer(List<RacingCarStatusResponse> responses) {
    List<Object[]> players = responses.stream()  
            .map(response -> new Object[]{  
                    response.getName(), response.getPosition()  
            }).collect(Collectors.toList());  
    String sql = "INSERT INTO player (name, position) VALUES (?, ?)";  
    jdbcTemplate.batchUpdate(sql, players);  
}

List<Object[]> 로 객체 리스트를 만든 후, batchUpdate 를 실행하면 된다.

  • GeneratedKeyHolder
    KeyHolder generatedKeyHolder = new GeneratedKeyHolder();  
    String sql = "INSERT INTO player(name, position) VALUES(:name, :position)";  
  
    for (RacingCarStatusResponse response : responses) {  
        SqlParameterSource parameterSource = new BeanPropertySqlParameterSource(response);
        jdbcTemplate.update(sql, parameterSource, generatedKeyHolder);  
  
        if (winnerNames.contains(response.getName())) {  
            int playerId = generatedKeyHolder.getKey().intValue();  
            winnerInsertDao.insertWinner(gameId, playerId);  
        }  
    }

update할 때 GeneratedKeyHolder 를 같이 넣으면 auto-increment 된 id를 가져올 수 있다.

궁금한 것

  • 현업에서는 GET을 거의 쓰지 않고 POST만 쓰는 경우가 많다고 하는데(by 포이) 왜일까? GET의 장점은 없을까?
    • GET이 되면 정보가 다 노출이 되니까 POST는 정보가 노출되지 않으니까 그런 거 아닐까 by 우가
    • 근데 body 암호화 하지 않으면 GET이랑 큰 차이 없다. URL에 노출되지 않을 뿐. 암호화해서 보내는 것이 좋다.

어려웠던 것

  • 컨디션 관리해야겠다.

느낀 것

  • 목소리를 작게 하자...ㅋㅋㅋㅋ 목소리 작게... 어제 오늘 계속 혼나니까 앞으로는 좀 더 조용한 사람으로 살아봐야겠다...
  • 집에 가면 역시나 공부를 안 한다. 그냥 잠실에 오래 남아있는 걸 목표로 해야겠다. 어제 날이 너무 춥고 컨디션도 안 좋아서 빨리 갔는데 집에서 아무것도 안 했다.