전체 글 120

영속성 전이와 고아 객체

이전 포스팅에서 이어집니다 2024.02.05 - [개발/jpa] - JPA 에서 프록시 객체와 지연 로딩 JPA 에서 프록시 객체와 지연 로딩 JPA 를 사용하면서 연관관계를 정의하고, 연관 관계 정의 시 사용하는 지연로딩에 대해 이해하기 위해서는 프록시라는 개념이 무엇인지 확실히 알아야 한다. 해당 게시글에서는 프록시에 대한 zigo-autumn.tistory.com 1. CASCADE, 영속성 전이 영속성 전이는 연관관계 세팅이나 즉시 로딩과는 전혀 관계가 없는 내용이다. 특정 엔티티를 영속 상태로 만들 때, 연관된 엔티티도 함께 영속 상태로 만들고 싶다면 영속성 전이를 사용할 수 있다. 즉, 영속성 전이를 사용하면 자동으로 자식 객체까지 persist 가 호출 된다. 여기서 헷갈릴 수 있는 부분..

Dev/JPA 2024.02.06

brew 사용시 명령어가 인식되지 않는 경우 해결 방법

개발환경 MacOs : Apple M2 / Ventura 13.4 brew 명령어를 사용하려고 하는데 전역으로 인식되지 않을 경우 설정하는 방법이다. 나는 homebrew/bin 폴더가 opt 하위에 잡혀 있었는데 이건 운영 환경마다 차이가 날 수 있으므로 다운받은 실행파일의 경로를 확인 후 본인의 운영체제 환경에 맞게 적절하게 적용해야 한다. % vi ~/.bash_profile ~ 명령어를 통해 home 하위에 있는 .bash_profile 파일을 열어 준 뒤 .bash_profile 파일 하단에 아래 내용을 추가한다 export PATH=/opt/homebrew/bin:$PATH % eval $(/opt/homebrew/bin/brew shellenv) 추가 후 아래명령어를 실행 하면 brew 로 ..

Dev/Etc 2024.02.06

JPA 에서 프록시 객체와 지연 로딩

JPA 를 사용하면서 연관관계를 정의하고, 연관 관계 정의 시 사용하는 지연로딩에 대해 이해하기 위해서는 프록시라는 개념이 무엇인지 확실히 알아야 한다. 해당 게시글에서는 프록시에 대한 개념과 연관관계에 대해 정리하려고 한다. 들어가기 전에, 해당글에서 '프록시 객체'와 '프록시 엔티티'는 동일한 의미로 사용됨을 밝힌다. 이 글을 이해하려면 JPA 에서 제공하는 영속성의 의미를 알고 있어야 한다. 필요한 사람은 해당 글을 참고하면 좋을 것 같다. 2023.12.11 - [개발/jpa] - JPA에서 영속성의 의미와 사용하는 애노테이션 정리 1. 프록시 객체가 뭘까? EntityManager에서 제공하는 getReference()로 프록시 객체의 기본 개념을 알아보자 일반적으로 entityManager ..

Dev/JPA 2024.02.05

[튀르키에(터키)여행] 카파도키아 그린투어 후기

이전 포스팅은 여기로 2024.02.04 - [여행정보/2023 터키] - [터키여행] 카파도키아에서 벌룬투어 예약하기 이전 글에서는 이스탄불에서 카파도키아 입국하는 방법과 카파도키아 벌룬투어 및 아바노스 후기를 작성했었다. 이번 글에서는 카파도키아 마을에서 있었던 일상과 그린 투어 후기를 남기려고 한다 :> 카파도키아 볼거리 추천 카파도키아는 관광객이 많아서 귀여운 엽서나 컵과 접시 그리고 특산품인 양탄자들을 파는 상점들이 거리에 오밀조밀 모여 있다. 가격은 거의 다 비슷하고 카드도 웬만해서는 가능했으니 구경하다가 하나쯤 구매하는 것도 추천한다. 숙소에 아침일찍 도착해서 좀 쉬다가 점심때쯤 마을 구경을 나갔는데 터키 아이스크림인 돈두르마를 파는 아저씨가 한국어를 유창하게 하면서 호객을 시작했다. 리라 ..

[튀르키에(터키)여행] 카파도키아에서 벌룬투어 예약하기

이전 포스팅은 여기로 2024.01.29 - [여행정보/2023 터키] - [터키여행] 이스탄불에서 카파도키아 이동하기! 가성비 카파도키아 숙소 추천 이전 포스팅에서 짧게 언급했지만, 카파도키아에서는 총 4박 5일 머무는 일정이었다. 다들 그렇겠지만 우리가 카파도키아에 방문한 가장 큰 목적은 벌룬을 보는 것이었고... 혹시나 벌룬이 뜨지 않을 경우를 대비해서 좀 길게 잡았다. ( 결론만 말하자면 4박5일은 너무길다 최대 3박을 추천한다. 특히 여름에는 벌룬이 거의 뜨기 때문에 ... 실제로 우리가 머무는 4박 내내 하루도 빠짐없이 떴다.) 원래 가고 싶었던 숙소는 후기가 좋았던 Aren Cave Hotel and Art Gallery 였다. 한국사람이 많이 가는지 카카오톡도 지원했고 가격대비 숙소 컨디션..

[튀르키에(터키)여행] 이스탄불에서 카파도키아 이동하기

여행이야 원체 좋아해서 자주 다녔다지만 사실 기록은 일기 외에 잘하지 않았는데, 주변에서 정보를 물어볼 때 하나하나 알려주기 번거롭기도 하고 저엉말 나중에 도움이 되지 않을까 싶어서 기록해 보는 첫 번째 포스팅! 누군가에게 좋은 정보가 되길 바라며 시작해 보겠다 : > 카파도키아를 언제 가야 하지? 터키 여행은 퇴사하고 정말 갑작스럽게 정했던지라 정말 비행기와 숙소외에 구체적인 계획은 하나도 안 잡고 떠났었다. ㅋㅋㅋ 다행히 동행인이었던 친구도 해외여행 경험이 적은 편은 아니라서 별 걱정 없이 출국했지만.. 이스탄불 ( IST ) 인-아웃 일정이었기 때문에, 카파도키아를 먼저 갈 것인가? 나중에 갈 것인가가 가장 큰 고민이었다. 중간에 프랑스로 이동하는 이상한 일정이었기 때문에 더 고민이 많았다. 결과적..

MockMvc 을 사용해서 Controller 테스트 코드 작성하기

개발환경 IDE : intelliJ FrameWork : springboot 3.2.2 Launguage java 17 DB : h2 Build Tool : Gradle 1. Controller 테스트 하기 Controller 작성 후 테스트할 때 MockMvc 를 이용하면 정상적으로 내가 원하는 요청을 넣었을 때 응답이 리턴되는지 확인 할 수 있다. 사용 방법은 다음과 같다. @AutoConfigureMockMvc @SpringBootTest @Autowired MockMvc mvc; @Autowired TestService service; @Test void testExample() throws Exception { ... given(this.userVehicleService.getVehicleDet..

Dev/TDD 2024.01.29

Swagger 를 사용해서 Type 이 Bearer 인 JWT Token 인증하기

개발환경 IDE : intelliJ FrameWork : springboot 3.2.2 Launguage : java 17 BuildTool : Gradle Swagger : SpringDoc 문제 상황 restAPI 생성 후 Swagger 를 이용해서 문서작성 도중 JWT 인증 관련 테스트를 위해서 Bearer 타입으로 인증정보가 넘어 와야했는데 자꾸 Bearer 가 누락된채로 JWT 키값이 넘어 왔다. 개발시 테스트는 Postman 을 사용 했다. 이때까진 전혀 문제가 없었는데.. Swagger 을 쓰니까 인증이 안됐다. 이전에, 내가 Swagger 를 사용하기 위해 참고한 링크와 build.gradle 은 다음과 같다 1. SpringDoc + Swagger 사용하기 [Spring Boot 3] S..

Dev/Springboot 2024.01.29

@Transactional 사용시 Insert/update 유의점

개발환경 IDE : intelliJ FrameWork : springboot 3.2.2 Launguage java 17 DB : h2 문제상황 Junit5을 통해 단위 테스트를 진행하다가 Insert / update 관련해서 로그가 찍히지 않는 현상이 발생했다. 테스트 편의성을 위해 메모리 DB 를 사용하고 있었기 때문에, 실제로 DB 에 들어간것을 확인하기도 힘들어서 Rollback 설정도 해보고 .. 삽질을 했는데 결과적으로는 @Transactional 을 선언한것이 문제였다. 해결방안 @Transactional 을 쓰면 롤백이 발생하는데 , jpa 특성상 롤백이 되면 nsert/update 상태를 확인할 수없다! 바로 flush 가 발생하지 않기 때문이다. ( flush 관련 내용은 여기로 )

Dev/TDD 2024.01.29

SpringBoot + JPA 환경에서 RestAPI 생성시 고려해야할 것들

회사에서 API 를 직접 생성해서 제공하고, 외부 API 를 가져와서 데이터를 파싱하는건 아주 흔한일이다. 처음에 지식이 없는 상태로 구축을 진행하게 되면, 유지보수 때 아주 힘들 수 있으므로 처음 개발을 진행할 때 항상 염두에 두어야 하는것들을 정리했다. 1. DTO 를 따로 만들자 Entity 는 여러군데에서 쓰기 때문에 변화가 많다. 따라서 외부에서 쓸 때 변화가 없는 request / response dto 를 따로 만들어서 작업하도록 하자. 실제로 유지보수할 때, 응답에 포함되는 responseBody 항목이 바뀌면 관련된 가이드 문서부터 시작해서 내가 제공한 사이트에서 나는 오류발생시 대응등.... 불편한점이 한두가지가 아니다. 그러므로 반드시 규격화된 DTO 를 생성하여 Entity 가 변경..

Dev/Springboot 2024.01.29

@ExceptionHanlder 처리와 @ RestControllerAdvice ResponseEntityExceptionHandler

SrpingBoot 환경에서 간단한 사용자 회원가입과 로그인을 구현하는 restAPI 를 만들다가, 예외처리를 위해 @ExceptionHandler 를 사용하던 도중 @RestControllerAdvice 와 ResponseEntityExceptionHandler 관련한 내용에 대해 궁금증이 생겨 찾아본 결과를 포스팅 하고자 한다. 사용한 스프링 부트 버전은 다음과 같다. 작업 환경 spring boot 3.2.2 1. @ControllerAdvice 와 RestControllerAdvice 의 차이 우선 나는 RestControllerAdvice 를 사용해서 관리할 ExceptionHandler 들을 하나의 파일로 묶었다. 이 때 ControllerAdvice 와 RestControllerAdvice ..

Dev/Springboot 2024.01.29

2023 정보보안기사 4회차 실기 불합격 후기

이번엔 보안기사 실기 불합격 후기를 들고 왔다. 보통 합격 수기를 많이 쓰지만.. 왜 떨어졌는지 파악하는 것도 다음 합격에 중요하다고 생각하기 때문에 아쉬움을 뒤로하고 글을 남긴다. 시험 결과 48점이 나왔다. 가채점 결과로는 실무를 하나도 맞추지 못해도 62~ 68 정도 사이를 예상했기에... 내가 생각한 것보다 서술형에서 많이 깎인 걸로 보인다. 준비 기간 및 사용 교재 나같은 경우는 필기를 대충보지 않았다. 필기부터 실기를 본다는 생각으로 꼼꼼히 보고 실제로 점수도 안정권으로 나왔다. 2023.10.21 - [자격증/정보보안기사] - 2023 정보보안기사 4회 차 필기 합격 후기 2023 정보보안기사 4회차 필기 합격 후기 23/10/20 오전 9시에 합격 안내 문자가 날아와서 기쁜 마음으로 사이트..

Repeated column in mapping for entity 오류 해결하기

오류 발생 상황 jpa 에서 상속관계 내용을 공부하던 도중 MappedSuperClass 에 해당하는 BaseEntity 를 생성하고, 이를 extends 하는 Member 코드를 작성 후 실행 오류 내용 Repeated column in mapping for entity 해결 방법 검색해보니 엔티티 설계 자체가 잘못되었을 때 발생한다고해서 BaseEntity 부분에 Member 의 @Id 부분이 중복되어 기재된 것을 확인 후 제거하니 정상적으로 잘 된다. 복사 붙여 넣기를 할 땐 항상 주의하자...

Dev/JPA 2023.12.27

JPA 상속관계 매핑 - 상속 전략과 MappedSuperClass

1. JPA 에서 상속관계매핑이란? 객체(Entity) 의 상속구조, 데이터베이스에서 Super/Sub 타입 관계를 매핑하는 것을 의미한다. 이처럼 부모 객체(Super)를 자식 객체(Sub)가 상속하게 되면 부모객체의 변수와 메서드에 접근 가능한 것처럼, JPA 에서도 상속관계 매핑을 사용하여 동일하게 구현할 수 있다. 예를 들어 판매자가 판매하려고 하는 상품(Item) 에는 서적(Book), 앨범(Album), 영화(Movie) 가 있다고 하자. 이 때 상품이 가지는 공통적인 특징을 묶어 Item 객체를 생성하고 서적과 앨범, 영화는 각각 Item 을 상속받는 Book, Album, Movie 객체로 생성할 수 있다. 이렇게 정의한 Item 과 Book, Item 과 Album, Item과 Movie..

Dev/JPA 2023.12.27

JPA 에서 연관관계의 정의

12월동안 JPA 강의를 수강하고 개인 프로젝트에 적용해보면서 가장 힘들었던 내용이다. 까먹기전에 수업들었던 내용을 간략하게 정리하려고 한다. 사실 강의를 한번들어서 연관관계를 파악하기에는 쉽지 않았다. 역시 직접해보는게 최고다. 개인 프로젝트 적용할 때 속도는 느렸지만 도움이 많이 되었기 때문에 혹시 이 개념이 헷갈린다면 시간이 좀 걸리더라도 본인이 직접 처음부터 강사님의 예제와 유사한 구성을 새로 기획하여 만들어 보는 것을 추천한다. 1. 연관관계란? 말 그대로 두 객체가 연관되어 서로의 객체를 참조 가능한 상태를 의미한다. 2. 방향(Direction) 의 종류와 의미 , 단방향과 양방향이란? 두 객체(Entity) 가 있을 때, 서로 연관관계가 있다면 양방향 연관 관계, 한쪽에 대해서만 관계가 있..

Dev/JPA 2023.12.27