10시 전체 회의 첫 전체 회의가 있었다. 이번 회의에서는 어제 마무리하지 못한 기획에 대해서 어떤 문제점이 있고 어떻게 해결해야할 지 의논하는 시간을 가졌다. 본가에 내려갔다가 일찍 올라오는 일정이 있었어서 정신없는 와중에 회의에 참여하게 되는 바람에 문제점에 대한 확실한 의견을 내지 못해서 조금 아쉬웠다. 기획 피드백 기획에서 공공 API를 호출했을 때 문제점이 10시 회의에서 크게 나타났는데, 우선 API가 보내주는 데이터가 지저분한 바람에 우리가 원하는 대로 가공하기가 쉽지 않다는 점이 있었고 또, 유저가 API를 호출할 때 보내준 데이터를 유저에게 뿌려줌과 동시에 DB에 저장하고, 스케쥴러로 관리하려고 했는데 이 부분에서 중복 요청이나 테이블 관리를 하기 어렵다는 문제가 있었다. 고민에 고민을 ..
실전 프로젝트 시작 항해99 팀원들과, 슈퍼 팀원, 그리고 디자이너가 한 데 모였을 때, 어떻게 프로젝트의 시작을 잘 이끌어 나갈 수 있을 지 고민이 많았는데 모든 분들이 열정적으로 참여해주셔서 덜컹거리지 않고 수월하게 스타트를 끊었다. 기획 회의는 의견을 정말 다양하고 많이 내주셔서 투표로 정하게 되었는데, 최종적으로 선전된 주제는 [장애인을 위한 배리어프리 가게 찾기]가 되었다. 개발을 시작했을 때부터 꼭 한번 만들어보고 싶었던 주제였기에 이 주제로 프로젝트를 진행하게 되어서 내심 기분이 좋았다. 기획 회의 선정된 주제를 바탕으로 어떤 기능을 넣을 지를 중점으로 기획 회의를 진행했다. 동시에 그 기능을 구현하기 위해서 백엔드는 어떤 기술을 사용해야할 지도 함께 고민을 하였고, 여러가지 레퍼런스와 기술..
들어가며 실전프로젝트 D-1 아직도 주특기 주차 과제에서 해결하지 못한 부분이 많다는걸 뒤늦게야 깨달아서 마음이 조급해졌다. 빨리 서버를 만들어서 프론트와 연결해야한다는 생각에 사로잡히는 바람에 문제점들을 제대로 짚어내지 못한게 화근이었다. 당장 실전 프로젝트때 적용해야하는 부분들이기 때문에 미리 알아두었어야 하는 부분들인데... 아쉬움이 크게 남는다. 오늘의 TIL은 주특기 주차동안 해결하지 못했던 부분, 아쉬웠던 부분을 실전프로젝트 때 적용할 수 있도록 정리하고자 한다. 해결하지 못한 부분 테스트 코드 작성 개발의 기본이 되는 테스트 코드 작성. 중요한 부분이지만 다른 부분을 잡느라고 작성하지 못했다. 뒤늦게 테스트 코드를 잡으려고 하니 시간이 부족한 사태가 벌어졌다. 실전이 들어가기 전에 테스트 코..
들어가며 드디어 벼르고 벼르던 프록시와 지연/즉시 로딩의 정리가 끝이 났다. 하이버네이트를 선행하거나 JPA를 확실히 공부한게 아니라 Spring Data JPA를 이용해서 바로 활용단계로 넘어간 탓인지 이 개념에 대해 이해하고 내 언어로 정리하기가 상당히 어려웠다. 또, 이 개념을 알기 위해서는 선행에 선행해야하는 지식들이 꽤 있어서 그것들 먼저 정리하고 나중에 와서 정리해야지! 라고 생각하고 있었더니 더 막막해져서 다른 일을 우선순위로 두는 바람에 많이 늦어졌다. 그래도 시간을 들여서 이렇게 정리하고 나니까 확실히 전보다는 JPA에 한걸음 가까워진 기분이 든다. 역시 공부하는 건 재밌어! 오늘의 TIL은 열심히 정리한 프록시와 지연 로딩, 즉시 로딩에 관한 포스팅을 첨부하는 것으로 간단하게 끝내고자 ..
들어가며 JPA를 이용해서 개발을 하다보니 처음에는 순환 참조 에러, 그 이후로는 지연 로딩 관련 에러를 계속 마주치게 된다. 특히나 지연로딩에 관련해서 애를 많이 먹었기 때문에 이번에는 지연로딩과 즉시로딩, 그리고 그 둘을 알기 위해 프록시까지 정리를 해보고자 한다. 객체는 객체 그래프로 연관된 객체들을 탐색한다. 그런데 객체가 DB에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 연관된 객체를 처음부터 DB에서 조회하는 것이 아니라, 실제 사용하는 시점에서 DB에서 조회할 수 있다. 하지만 자주 함께 사용하는 객체들은 조인을 사용해서 함께 조회하는 것이 효과적이다. JPA는 즉시 로딩과 지연 로딩이라는 ..
들어가며 실전프로젝트까지 얼마 남지 않은 시점에서 그 무엇보다 JPA의 개념을 가져가는게 더 중요할 거라고 생각했기에 체력 관리와 개념 공부에 힘쓴 날이다. 오늘의 TIL은 오늘 정리한 JPA의 영속성 컨텍스트의 포스팅을 링크거는 걸로 마무리하도록 하겠다! 영속성 관리 [JPA] 영속성 관리 [JPA] 영속성 관리 들어가며 이 포스팅은 김영한 강사님의 자바 ORM 표준 JPA 프로그래밍 강의와 저서를 주로 참고하여 작성하였음을 미리 밝힌다. Spring data JPA를 사용하여 개발을 진행하기 전에 JPA와 하이버네이트 annajin.tistory.com 마치며 오늘은 신나는 맥주파티 하는 날~! 일요일의 연장으로 소소하게 즐기는 시간을 갖기로 했다.
들어가며 이 포스팅은 김영한 강사님의 자바 ORM 표준 JPA 프로그래밍 강의와 저서를 주로 참고하여 작성하였음을 미리 밝힌다. Spring data JPA를 사용하여 개발을 진행하기 전에 JPA와 하이버네이트에 대한 이해가 부족하다고 판단하여 공부를 하기 위해 작성된 포스팅이므로 잘못된 정보가 있을 수 있기에 김영한 강사님의 저서와 강의를 직접 듣고 공부하는 걸 추천한다. 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저는 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일을 처리한다. 쉽게 생각하면 엔티티 매니저는 엔티티를 저장하는 '가상의 데이터 베이스'라고 볼 수 있다. 엔티티 매니저 팩토리는 이 엔티티 매니저를 만드는 '공장'인데, 공장을 만드는 건 현실에서든 개발에..
들어가며 이번에도 다사다난했던 일주일이었다. 온갖 처음 보는 에러도 잔뜩 만나보고, 왜 안되지와 왜 되지의 싸움도 했었는데 결국 프론트와의 연결까지 성공했다....!! 찜찜하긴 하지만 어떻게 완성을 한 내 작고 소중한 코드를 보면서 깨닫는 부분이 많다. 실전프로젝트까지 D-4. 이번주 WIL도 여느 때와 같이 항해99에서 제시해준 키워드를 간단하게 정리하고, 이번 한 주간의 회고록을 작성해보고자 한다. JPA [JPA] JPA, Hibernate, Spring Data JPA의 차이점 [JPA] JPA, Hibernate, Spring Data JPA의 차이점 들어가며 짧은 시간 내에 JPA를 프로젝트에 적용하기 위해서 JPA를 제대로 공부할 시간 없이 바로 코드에 적용하느라고 수많은 에러를 만나고 해결..
들어가며 짧은 시간 내에 JPA를 프로젝트에 적용하기 위해서 JPA를 제대로 공부할 시간 없이 바로 코드에 적용하느라고 수많은 에러를 만나고 해결해보았다. 하지만 코드를 작성하면서 EntityManager를 이용하지 않고 Repository 인터페이스만을 사용하였다. 사실 우리가 급하게 적용해본 기술은 JPA의 구현체인 Hibernate를 쉽게 사용하기 위한 Spring Data API라는 스프링에서 제공하는 '인터페이스'이다. JPA를 공부하면서 누군가 구현해둔 편리한 도구만을 이용해서 개발을 한다면 결국 각자 기본 개념을 제대로 알지 못하고 혼용해서 사용하거나 헷갈리는 문제, 그리고 에러가 발생했을 때 그 원인을 파악하지 못하는 여러가지 문제가 생길 것이다. 따라서 이번 포스팅에서는 가장 기본이 되면..
문제상황 분명 CORS 정책을 허용해주는 코드를 잘 적용했다고 생각했는데 자꾸 똑같은 시뻘건 에러를 내뱉었다. 거의 3일동안 에러를 해결하기 위해 찾아 해맨거 같은데 서버 단독으로는 해당 문제를 테스트해볼 수가 없어서 고민하던 중에 다른 프론트 분의 도움으로 테스트를 해볼 수 있었다. 해결과정 구글의 바다에서 허우적대던 와중에 다음과 같은 글을 발견했다. Tomcat8.5 + SpringBoot CORS 문제 해결 Tomcat8.5 + SpringBoot CORS 문제 해결 환경은 SpringBoot의 내장톰캣을 이용하지 않고 톰캣 서버를 별도로 설치하여 그 안에서 스프링부트 앱을 올리는 구조였다. 프로젝트의 API를 프론트개발 쪽에서 호출해야 하는데 CORS 문제가 있어 S 12teamtoday.tis..