본문 바로가기

전체 글

(262)
[JPA Exception] TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing 과 여러 가지 문제들 결론적으로 말하면 엔티티를 저장할 때 모든 연관관계의 엔티티는 영속상태여야한다는 원칙을 몰라서 생긴 일이었다. # org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : pnu.problemsolver.myorder.domain.Cake.store -> pnu.problemsolver.myorder.domain.Store; nested exception is java.lang.IllegalStateEx..
[JAVA]예외는 언제 사용해야할까? 요즘 공모전을 나가면서 하루에 10시간은 개발하는 것 같다.. 방학이라 가능.. 점점 프로젝트 규모가 커지면서 예외의 필요성을 느꼇다. 근데 어떤 글에서는 Exception, try-catch는 최적화도 안되고 고비용이다. 그냥 null을 반환하거나 정의된 상수값을 반환하라는 글을 본적이 있다..(예외를 남발하지 말라는 글이었음.) 근데 분명 우린 사용자 정의 예외를 만드는 방법, throw new RuntimeException~을 배웠는데 안쓰는 건 이상하다. 그래서 과연 어떤 상황에서 예외를 쓰면 좋은지 알아보고자 한다. 아래의 블로그 참조하자..꼭꼭 보자!!.. 내가 여러개 보고 엄선한거니까.. 읽을 가치가 있다. https://tecoble.techcourse.co.kr/post/2020-08-1..
DTO <->Entity 변환. converter? vs toEntity(), toDTO()? # 이를 지원하는 많은 라이브러리들이 있지만 라이브러리의 기술을 제대로 알지 못하면 사용하지 않는다는 생각때문에 귀찮아도 코드로 구현하려 한다. 1. 처음에는 DTO - Entity 변환하는데 converter를 사용하려 했다. 근데 그것보다는 static으로 함수를 만드는게 더 깔끔하다는 생각을 했다. DTO-Entity변환 메소드를 컨트롤러의 파라미터에 자동 바인딩을 사용해야하는 것도 아니라서 굳이 converter로 구현할 필요가 없다고 생각했다. 그리고 converter로 다 작성하면 너무 많은 converter가 생겨서 딱봐도 뭔가 잘못된거 같은 느낌이 들었다. 관리비용이 너무 많이 들 것 같은 느낌.. Entity 클래스에 toEntity()를 , DTO클래스에 toDTO()를 Static 메..
stack trace읽는 법. 너무 좋은 글이라 저장! https://okky.kr/article/338405 OKKY | 초보 개발자를 위한 스택트레이스 읽는 법 몇 년 전에 네이버 카페에 썼던 글인데, 답변을 달려다 보니 링크가 안되서 이 곳에 옮겨 적습니다. 초보 개발자분들이 제대로 된 디버그 방법을 배우지 못해 오류가 나면 무턱대고 검색부터 하 okky.kr 구글링 하다가 좋은 글을 발견해서 남겨놓음.
라이브러리 사용에 대한 좋은 인사이트 https://better-dev.netlify.app/java/2020/10/26/compare_objectmapper/ Object Mapper 성능 비교 Object Mapper와의 만남 세상에 수많은 라이브러리들이 존재한다. ‘이런게 불편한데.. 이런걸 구현해주는 라이브러리가 없을까?’ 있다. 우리가 생각하기에 ‘필요한’, ‘있으면 좋겠다’ 싶은 better-dev.netlify.app java의 DTO-entity변환에서 자주 사용하는 라이브러리인 ModelMapper와 MapStruct의 성능에 대한 글이다. ModelMapper는 reflection으로 복사를 처리해서 성능이 안좋다. 추천하지 않는다고 함. 어노테이션 기반의 MapStruct를 사용하도록 하자. 라이브러리를 사용할 때 다들 ..
ModelMapper 를 사용할 때는 @NoArgConstructor있어야 한다.! 그렇다.. 다른 글에서 말했지만 reflection기반의 ModelMapper사용하지말고 어노테이션 기반의 MapStruct를 사용하자.
AWS linux Caused by: java.net.Socketexception: Permission denied 해결 스프링 부트로 프로젝트를 하고 aws에 올리던 와중 Caused by: java.net.Socketexception: Permission이 발생. java -jar ~.war(또는 jar)를 실행하고 나니 이런 에러가 뜬다. AWS linux ubuntu이다. 리눅스는 일반사용자에게 well known port(~1024) 사용권한을 주지 않는다. -> sudo로 실행하면 해결가능! 아래는 내가 실행을 쉽게 하기 위해 진행한 쉘스크립트이다. 먼저 BackEnd라는 디렉토리로 이동(git에 BackEnd라고 레포지토리를 만들었다. git clone한 상황임.) build할 때는 test를 진행하지 않게 했다. (-x test 옵션. 시간차이 꽤 많이 난다.) t2.micro라서 너무 느렸다..(swap 메..
SpringBoot Map으로 파싱하기. Jackson @ OAuth를 진행하던 중 아래의 문자열을 파싱해야하는 상황이 왔다. 아래의 형식은 네이버 OAuth 응답 형태임. 아래의 JSON을 어떻게 파싱하나 궁금했다.. 객체로 바인당 하려면 계층 구조 때문에 객체를 2개 정의해야하는 상황임.. 귀찮았다. 그냥 Map으로 받으면 알아서 해주지 않을까? jackson이 어떻게 동작하는지 궁금했다. jackson은 스프링 부트에 기본적으로 포함되어 있으므로 별도의 설정을 하지 않아도 된다. 컨트롤러에서 json->object 바인딩을 할 때 Jackson으로 파싱, 바인딩한다. {resultcode=00, message=success, response={id=22323-O8aLaUSxljfFZ52g4, age=20-29, gender=M, email=32131@g..