210524 월 TIL

bongf·2021년 5월 25일
0

TIL

목록 보기
36/40

✔ Done

  • 호눅스 수업

    • 왜 B+tree를 쓰는지 알게되었다.
    • B-tree 와의 차이는 느낌만 알겠지만 복습하면서 더 공부해야겠다(#todo)
  • 프로젝트

    • JDBC Template 기본 사용법에 대해서 숙지했다.
    • 테이블의 관계에 대한 고민이 되면서 이런 저런 자료를 찾아보았다.
      • 지난 번 호눅스 수업인 왜 JDBC에서는 many - to - one이 되지 않는가 ( 하려면 id로 간접 참조? 만 가능 하다) 에 대해 다시 복습했다.
      • 어떤 것을 어그리게잇 루트로 하고 어떤 것을 분리하고 하는 것에 대한 고민이 많이 생긴다.

📂 Feeling

Good

  • 다른 프로젝트를 찾아보면서 프로젝트 구조에 대해 고민한 것

Bad

  • 구조에 대한 고민 때문에 코드 짜는 시간이 부족했다.

🗒 Learned

1. JDBC Template

1.1 NamedParameterJdbcTemplate

  • Baeldung 3.2
  • Spring Docs
  • SQL 쿼리 안에서 ? 를 썼던 부분을 :id 처럼 이름을 지정해서 쓸 수 있다.
    • 단순 JdbcTemplate을 쓴 경우
    • NamedParameterJdbcTemplate을 쓴 경우

1.2 MapSqlParameterSource

  • MapSqlParameterSource를 생성해서 key를 필드 이름, 값을 필드 값으로 넣고 이를 넣어주는 형식
  • 여러개의 파라미터를 전달할 때 유리하다

1.3 BeanPropertySqlParameterSource

  • MapSqlParameterSource 대신 사용할 수 있다.
  • Bean 객체로 파라미터 전달
  • Baeldung 에서 예시 가져옴. 객체를 하나 만들고 그 객체에 찾고자 하는 필드에 해당 값을 넣어서 전해준다.

1.4 RowMapper

1.5 BeanPropertyRowMapper

  • BeanPropertyRowMapper
    • 수동으로 필드 받아와서 넣어주지 않아도 만들어준다.
    • 단, 디폴트 생성자가 있어야 한다. (매개변수 없는)
    • 단, 생성할 객체에 필드마다 setter가 있어야 한다.

1.6 batch update

For single insert statements, the insert method of JdbcTemplate is good. However, for multiple inserts, it is better to use batchUpdate.

2. JDBC Template 적용

2.1 save() 기능 구현

2.1.1 가장 간단한 방법 : update 사용 _ 그러나 번거로움

public int addEmplyee(int id) {
    return jdbcTemplate.update(
      "INSERT INTO EMPLOYEE VALUES (?, ?, ?, ?)", id, "Bill", "Gates", "USA");
}
  • 그런데 우리는 보통 save(객체)다. 받아온 객체의 getter로 필드를 하나하나 넣어주기에는 번거롭다

2.1.2 대안1) 위에서 사용했던 NamedParameter 를 넣어준다.

  • 번거롭긴 매한가지이지만
  • 어떤 필드에 어떤 값이 들어가는지 명확해진다.

2.1.3) 대안2) SimpleJdbcInsert를 사용해준다. .. 객체를 반환해 주려면?

  • Baeldung 5.1
  • 문제는 simpleJdbcInsert.execute()를 하면 결과값이 int라는 것이 문제. 우리는 세이브 하면 보통 저장한 객체를 반환
    • 객체를김영한 님의 코드를 보고 따라서 객체를 반환해 주도록 했다.
    • test 가 통과 되었으나 MapSqlParameterSource를 생성하는 코드가 너무 많다.
    • SqlParameterSource 를 활용하고자 한다. Booking에 있던 필드들로 자동 매핑된다.
    • 테스트가 통과했다.

3. 기타

4. 정보가 많았던 블로그

profile
spring, java학습

0개의 댓글