장고에서 many to many field를 써야 할 때가 종종 있습니다. 예를 들자면, 게시물 하나에 태그를 구현하는 것, 친구 관계 등이 있습니다. 이 글에서는 many to many field를 다룰려는 것은 아니고, 다대다 관계에서 어떤 식으로 테이블을 생성하는지만 간단하게 알아보겠습니다. 게시물 테이블이 있다고 해 보겠습니다. 보통 한 게시물의 작성자는 하나이므로, 게시물 테이블은 이런 식으로 설계해도 크게 문제는 없습니다. 1, 2, 3은 글을 쓴 작성자의 유저 id를 의미합니다. fk로, 유저의 id를 참조합니다. board에서 user 테이블을 참조하는 외래키 정도라고 생각하시면 편하겠습니다. 2번 유저의 이름을 GA에서 ga로 바꾸었을 때, 2번 게시물의 작성자가 ga라는 것을 알 수 있..
DB 검색 결과
mybatis의 xml mapper는 dynamic sql도 지원하고 있습니다. 저는 처음에 배울 때, if나 foreach 정도만을 써 왔는데요. trim도 알아두면 상당히 강력한 도구가 될 듯 싶습니다. 검색 api를 보면서 감을 잡아보도록 하겠습니다. 저번 시간에 모든 책을 get 하는 api를 작성한 적이 있었습니다. 이것을 Query 파라미터로 받게 바꾸어 보겠습니다. 저는 bookClass와 bookName을 선택적인 Query parameter로 받게끔 하였습니다. 만약에, 해당 Key가 없다면, null 값으로 들어갈 겁니다. 왜냐하면 모델 book의 bookClass는 int가 아닌 Integer로 선언되었기 때문입니다. 쿼리 결과는 위와 같이 나와야 합니다. 먼저 BookMapper의 ..
mybatis를 이용해서 간단하게 CRUD를 하는 API를 만드는 도중에, 아래와 같은 이슈가 발생하였습니다. 왜 그랬을까요? 제 DAO 클래스 중 일부분만 보도록 하겠습니다. 제가 작성한 DAO 클래스 중 일부만 따 보겠습니다. 먼저 UserDAO의 생성자에는 위와 같은 내용이 들어가 있습니다. 다른 건 중요하지 않고, 바로 SqlSessionFactoryBuilder로 들어가 보도록 하겠습니다. 여기서 InputStream 참조 변수 하나만 받는 build 메서드를 찾아보겠습니다. 바로 이 메서드군요. 여기서 3개의 인자를 가지는 build를 찾아보겠습니다. 이 친구군요. 78번째 줄의 build를 보겠습니다. 그러면, 새로 생성된 DefaultSqlSessionFactory 객체를 참조하는 값이 리..
메일로 질문이 왔습니다. 코딩 테스트를 준비할 때, 하드 코딩을 하는 것은 별로 안 좋나요? 사실, 그에 대한 답은 제가 쉽게 답할 수 없었습니다. 하드 코딩을 하거나, 답을 미리 저장을 해 놓는 방법으로, 백준 내에 있는 문제를 푼 것이 10개에서 15개 내외밖에 되지 않기 때문입니다. 중요도가 떨어져 보일 수 있어요. 이 기법을 쓰는 이유는 단 하나입니다. 정말 안 풀릴 때 최후의 수단으로 써 보라고. 제가 이 기법을 쓰지 않았다면, 10개에서 15개 정도 되는 문제를 풀지 못했을 겁니다. 오늘은 '답을 미리 저장해 놓는 기법' 을 구현 문제에 어떻게 쓰일 수 있는지 보도록 하겠습니다. 백준 17825번 문제인 주사위 윷놀이를 보도록 하겠습니다. 문제가 상당히 길기 때문에, 제가 링크를 걸어 놓겠습니..
최근댓글