들어가며 2주차 과제를 제출하기 위해 Readme를 작성하면서 여러가지 개념들을 간단하게 정리하는 시간이 있었다. 항해99 e반 공식 TIL 망령으로서 대충 정리한 내용을 블로그에 올리고 싶지 않았지만 조금씩 내려놓지 않으면 이도저도 안될 것 같으므로 오늘의 TIL은 여러가지 정리한 내용들을 종합해서 작성해보고자 한다. 프레임워크와 라이브러리의 차이점 프레임워크와 라이브러리의 차이점은 막연하게 알고 있었지만 막상 설명해보라고 한다면 명확하게 대답하기가 어렵다. 둘다 개발자가 필요한 기능들을 사용하기 편하게 구현해둔 집합체이지만 그 차이점은 존재한다. 둘의 차이점을 알기 위해서는 라이브러리와 프레임워크의 개념을 먼저 알고 있어야한다. 라이브러리(Library) 라이브러리는 단순 활용이 가능한 도구들의 집합..
항해99
들어가며 응급실 다녀오느라 과제 제출을 제 시간에 못했다. 내 몸뚱아리는 왜 이렇게 나약한지,, 급하게 과제 마무리를 하고 있는데 다행히 과제 제출 기한이 많이 미뤄졌다! 미처 추가하지 못한 부분들을 깔끔하게 추가할 시간이 생겼다. 코드 리팩토링이랑 살짝 내려놓았던 부분들을 다시 매꿔서 제출해야겠다고 다짐하며 오늘의 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" 포맷이 아니라 기본 포맷으로 반환해..
들어가며 주특기 PBL 1주차와 2주차의 사이에서 써내려가는 WIL. 우당탕탕 항해99를 시작한 지도 벌써 한 달이 넘어갔다. 스파르타 코딩클럽이라는 이름에 걸맞게 '진짜' 스파르타인 커리큘럼을 얕보고 시작한게 아닌가 하는 후회와 지금까지 이정도로 무언가를 위해 열심히 공부해본 적이 있었나 하는 지난 날에 대한 반성이 물밀듯이 밀려왔다. 많은 생각을 안고 달린 이번 주의 WIL은 항해99에서 제시해준 키워드인 '주특기 PBL 1주차 과제를 하면서 느꼈던 것들'에 대한 회고록을 작성해보고자 한다. 회고록 이라고 썼지만 지난 한 주간의 일기 주특기 PBL 1주차 시작 주특기 1주차에서는 기존에 배웠던 영속성 프레임워크인 MyBatis가 아닌 JPA를 활용하여 개발하는 방식을 처음 배우고 사용해보았다. 언제나..
들어가며 처음 써보는 Spring Security와 JWT가 너무 어렵다... 막상 정리하려니 되게 막막하므로 오늘의 TIL은 2주차 과제를 하면서 발생한 에러들에 대한 트러블 슈팅을 해보고자 한다. Lombok으로 생성자 주입하기 의존성 주입을 해주는 방법은 크게 3가지가 존재한다. 생성자 주입 필드 주입 수정자(setter) 주입 이 중 가장 권장되는 방식은 생성자 주입이라고 한다. 생성자는 객체를 생성할 때 한 번만 호출되므로 불변하다는 특징을 갖게되고, 그러므로 final 키워드를 사용할 수 있게 되기 때문이다. 이런 생성자의 특징을 이용하면 Lombok의 @RequiredArgsConstructor로 간단하게 생성자 주입을 구현할 수 있다. @RequiredArgsConstructor는 fina..
들어가며 JPA의 늪에서 빠져나오려면 얼마나 걸릴까...? Spring Data JPA를 사용하려면 그 베이스가 되는 JPA에 대해서 많은 공부가 필요한 것 같다. 단기간에 완성될 건 확실히 아닌 것 같고. 각설하고, 오늘의 TIL은 프록시와 즉시 로딩 / 지연 로딩을 정리한 글을 첨부하고자 한다. [JPA] 프록시(Proxy), 지연 로딩(LAZY Loading), 즉시 로딩(EAGER Loading) [JPA] 프록시(Proxy), 지연 로딩(LAZY Loading), 즉시 로딩(EAGER Loading) 들어가며 JPA를 이용해서 개발을 하다보니 처음에는 순환 참조 에러, 그 이후로는 지연 로딩 관련 에러를 계속 마주치게 된다. 특히나 지연로딩에 관련해서 애를 많이 먹었기 때문에 이번에는 지 ann..
들어가며 오늘의 TIL은 해결하지 못한 문제가 많으므로 오늘 작성한 Spring framework를 첨부하는 걸로 마무리하도록 하겠다. 스프링 프레임워크 [Spring boot] 스프링 프레임워크(Spring Framework) [Spring boot] 스프링 프레임워크(Spring Framework) 들어가며 JAVA를 메인 언어로 선택했다면 당연히 사용하게 될 스프링 프레임워크. 당연하다고 무조건 사용하는게 아니라 어떤 특징이 있고 장,단점은 무엇인지 알고 사용하는게 좋지 않을까? 예 annajin.tistory.com *정리해야할 것* JPA 즉시 / 지연로딩 마치며 JPA 너무 어렵고 알아야할 게 많은데 엄두가 안난다. TIL을 알차게 쓰고 싶은데 오늘은 고민하던 부분 중 해결한 부분이 없어서 너..
들어가며 다른 수강생분 덕에 계속 머리싸매던 부분을 속시원하게 해결했다! 적용해보고 싶은게 많았지만 전부다 해보기는 수정해야할 부분이 너무 많아서 하나씩 적용할 수 있는 부분들만 하기로 했다. 따라서 오늘의 TIL은 과제 [나만의 블로그 만들기]에 적용한 예외처리 방법을 간단하게 소개하고 삽질로그를 올려보고자 한다 유효성검증 - @Valid @Valid는 JSR-303 표준 스펙으로써 제약 조건이 부여된 객체에 대해 빈 검증기(Bean Validator)를 이용해서 검증하도록 지시하는 어노테이션이다 출처 - 망나니 개발자님의 블로그 이 빈 검증기를 이용해서 RestController로 들어오는 값들을 편리하게 검증할 수 있다. 정말 편리하게도 DTO에 원하는 검증 어노테이션을 붙여주고 Controller..
들어가며 과제를 하면서 '왜' 이렇게 사용하는지, 다른 방법은 없는지를 고민하면서 코드를 짜다보니까 알아야할 거랑 궁금한게 점점 많아진다. 그래서 뭐부터 정리해야할 지 고민이 된다. 일단 오늘의 TIL은 과제를 하면서 이용했던 부분과 삽질로그를 작성해보고자 한다. JPA findAll 정렬하기 요구사항 중 하나인, 작성 날짜 기준으로 내림차순 정렬을 하기 위해 JPA sort하는 방법을 찾아봤다. 물론 여러가지 방법이 있겠지만 맘에 드는 두가지만 소개해보도록 한다. 1. Sort 파라미터 사용하기 List posts = postRepository.findAll(Sort.by(Sort.Direction.DESC, "createdAt")); findAll을 해주고 Sort.by()를 사용하는 방식이다. 간단..
반응형