들어가며 이 포스팅은 김영한 강사님의 자바 ORM 표준 JPA 프로그래밍 강의와 저서를 주로 참고하여 작성하였음을 미리 밝힌다. Spring data JPA를 사용하여 개발을 진행하기 전에 JPA와 하이버네이트에 대한 이해가 부족하다고 판단하여 공부를 하기 위해 작성된 포스팅이므로 잘못된 정보가 있을 수 있기에 김영한 강사님의 저서와 강의를 직접 듣고 공부하는 걸 추천한다. 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저는 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일을 처리한다. 쉽게 생각하면 엔티티 매니저는 엔티티를 저장하는 '가상의 데이터 베이스'라고 볼 수 있다. 엔티티 매니저 팩토리는 이 엔티티 매니저를 만드는 '공장'인데, 공장을 만드는 건 현실에서든 개발에..
CATEGORY
들어가며 이번에도 다사다난했던 일주일이었다. 온갖 처음 보는 에러도 잔뜩 만나보고, 왜 안되지와 왜 되지의 싸움도 했었는데 결국 프론트와의 연결까지 성공했다....!! 찜찜하긴 하지만 어떻게 완성을 한 내 작고 소중한 코드를 보면서 깨닫는 부분이 많다. 실전프로젝트까지 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..
들어가며 처음 프론트와 협업을 해보면서 지금껏 마주보지 못했던 수많은 에러를 마주했다. 그 중 하나가 계속 과제에서 강조했던 CORS 정책 위반이었는데, 처리를 해두었다고 생각했음에도 같은 에러가 났다. 그러므로 오늘의 TIL은 CORS에 대해 알아보고 이를 어떻게 잡을 지 알아보고, 오늘 만난 에러에 대한 트러블 슈팅 또한 해보고자 한다. CORS(Cross-Origin Resource Sharing) 교차 출처 리소스 공유(CORS, Corss-Origin Resource Sharing)는 일반적으로 개발을 배우기 시작하는 단계쯔음 클라이언트 - 서버 간의 통신을 시도할 때, CORS 정책 위반 에러로 처음 접하게 된다고 한다. 이 CORS는 무엇이고 뭐 때문에 우리에게 에러를 던져줄까? CORS는 ..
들어가며 과제 제출을 위해 Readme.md를 작성해야할 일이 생겼다. 깃허브 Readme는 기본적으로 마크다운 문법을 사용하기 때문에 깔끔한 Readme를 위해서는 이 문법을 대강이라도 숙지하고 있어야한다. Notion도 기본적으로는 마크다운 문법을 사용하고 있고, 여러모로 쓸 일이 많은 문법인데 헷갈릴 때마다 구글링하기 번거로우므로 오늘의 TIL은 깃허브 Readme 작성을 위한 마크다운 문법을 간단하게 정리해보고자 한다! 마크다운 문법 제목 # 제목1 ## 제목2 ### 제목3 #### 제목4 ##### 제목5 ###### 제목6 제목1(#)과 제목2(##)은 Header로 취급되기 때문에 수평선이 자동으로 생긴다. 인용 > 인용1 >> 인용2 >>> 인용3 목록 숫자 목록 1. 숫자 목록 2. 숫..
들어가며 2주차 과제를 제출하기 위해 Readme를 작성하면서 여러가지 개념들을 간단하게 정리하는 시간이 있었다. 항해99 e반 공식 TIL 망령으로서 대충 정리한 내용을 블로그에 올리고 싶지 않았지만 조금씩 내려놓지 않으면 이도저도 안될 것 같으므로 오늘의 TIL은 여러가지 정리한 내용들을 종합해서 작성해보고자 한다. 프레임워크와 라이브러리의 차이점 프레임워크와 라이브러리의 차이점은 막연하게 알고 있었지만 막상 설명해보라고 한다면 명확하게 대답하기가 어렵다. 둘다 개발자가 필요한 기능들을 사용하기 편하게 구현해둔 집합체이지만 그 차이점은 존재한다. 둘의 차이점을 알기 위해서는 라이브러리와 프레임워크의 개념을 먼저 알고 있어야한다. 라이브러리(Library) 라이브러리는 단순 활용이 가능한 도구들의 집합..
들어가며 응급실 다녀오느라 과제 제출을 제 시간에 못했다. 내 몸뚱아리는 왜 이렇게 나약한지,, 급하게 과제 마무리를 하고 있는데 다행히 과제 제출 기한이 많이 미뤄졌다! 미처 추가하지 못한 부분들을 깔끔하게 추가할 시간이 생겼다. 코드 리팩토링이랑 살짝 내려놓았던 부분들을 다시 매꿔서 제출해야겠다고 다짐하며 오늘의 TIL은 오늘 적용한 여러가지 기능들을 정리해보고자 한다. application.yml에 있는 민감 정보 .gitignore에 포함시키기 application.yml은 설정파일로 DB의 URL, username, password가 그대로 노출되어있고, S3의 key 역시도 노출되어있다. 이 정보들이 github에 그대로 올라간다면, 해커한테 내 DB랑 S3 해킹해주세요~ 하는 꼴이므로... ..
들어가며 TIL 업로드 하는걸 깜빡해서 15일에 올리는 14일 TIL..!! 오늘의 TIL도 과제를 하면서 겪었던 에러를 트러블 슈팅해보고자 한다! 트러블 슈팅 문제 - DataIntegrityViolationException 에러 could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement not null인 테이블에 null을 집어 넣으려고 해서 나타나는 에러였다. 에러로그에서 바로 힌트를 얻을 수 있는데, 메인 에러 명은 데이터 무결성 위반 예외 이고, 뒤쪽에 적힌 에러명은 제..
들어가며 시도하기 막막했던 부분을 구글링해서 나온 코드로 해결했더니 속 시원하면서도 완전히 이해하고 쓰는게 아니라는 생각에 답답하기도 한 하루였다. 아직 할게 많이 남았지만 긴 시간동안 몰입해서 과제를 했으므로 만족. 집중력이 떨어진 김에 남은 시간은 TIL과 미뤄뒀던 공부 주제들을 포스팅하는 데에 사용하기로 했다. 오늘의 TIL은 과제를 하면서 겪었던 문제들에 대한 트러블 슈팅을 해보고자 한다. 트러블 슈팅 문제 - Timestamp Format 변경하기 결론만 보고 싶다면 세번째 시도를 봐주세요! 유저 정보를 User Entity가 아니라 UserResponseDto에 매핑해서 넘겨주는 방식을 사용하고 있는데, 내가 원하는 포맷인 "yy/MM/dd HH:mm:SS" 포맷이 아니라 기본 포맷으로 반환해..
반응형