반응형

kotlin에서 jpa를 사용할 때 다음과 같은 에러가 난다면 해당 클래스에 Serializable을 상속받고 @IdClass(클래스명.class)를 선언해주자

에러발생코드

Caused by: org.hibernate.MappingException: Composite-id class must implement Serializable

위와 같은 에러 발생

문제 해결을 위해서 아래와 같이 코드 추가

아 그리고 composite key로 구성할 column에는 모두 @Id 애노테이션을 달아주어야 한다.

반응형
반응형

 

소스코드에서 우측 마우스 클릭
나오는 팝업창에서 Run 실행

반응형

'Programming' 카테고리의 다른 글

크롬 개발자도구 network 탭에서 request 안보일때  (1) 2023.01.10
반응형
No ParameterResolver registered for parameter in constructor...
No ParameterResolver registered for parameter [......] in constructor 
[public ......org.junit.jupiter.api.extension.ParameterResolutionException: 
No ParameterResolver registered for parameter

테스트 코드를 짜다가 다음과 같은 에러가 발생했는데 해결책과 설명을 잘 정리해놓은 블로그가 있어서 기록용으로 남겨본다.

https://minkukjo.github.io/framework/2020/06/28/JUnit-23/

 

JUnit 5 + Kotlin 테스트 클래스에서 생성자 주입 이슈

서론

minkukjo.github.io

 

반응형

'Programming > Kotlin' 카테고리의 다른 글

kotlin jpa comopsite key Serializable error  (0) 2021.09.15
반응형

# 자존감은 일상의 성실함으로부터 온다.

너무나도 공감가는 말이다. 한탕주의가 만연한 요즘 코인과 주식에 빠져 지내는 사람이 많다.(나또한 한 때 그랬다) 이런 삶이 결국 나에게 주는 것은 신성한 노동의 가치를 느끼지 못하게 만든다. 일해서 뭐해? 코인으로 하루에 몇 십, 몇 백씩 벌 수 있는데. 이런 생각들을 가지게 되며 내 자신의 가치를 높여가야할 시간에 주식창과 코인창에 빠져 가격의 변동에 온통 내 신경과 관심이 몰려 있다. 이런 상태가 지속되다보니 하루의 일상에서 느꼈던 작은 행복들을 느끼지 못하게 되었다. 운동을 할 때의 즐거움, 오늘 해야 할 일을 잘 마무리했을 때의 기쁨, 성실히 하루를 보낸데 대한 자긍심 등을 잃고 살아가게 된다. 그나마 돈이라도 잃지 않으면 다행이다(보통은 다 잃는다). 그렇게 되면 돈도 잃고 내가 내 가치를 키울 수 있는 소중한 시간도 잃는 것이다. 생각만해도 끔찍하다. 일상을 성실하게 임함으로써 내 가치를 올리는데 시간을 투자하는 것이 코인 주식과 달리 시간이 지나도 꾸준히 우상향 할 수 있는 최고의 투자가 될 것이다.

# 결혼은 서로에게 인생 로또가 되어주는 것

외모, 가치관, 성격, 가족분위기, 성실함, 능력(미래에 더욱 멋져질 사람) + 경제력(이건 보너스같은 그냥 있으면 좋은거) 가 잘맞는 내 인생의 현실적인 로또를 찾는 것  => 나 결혼 할 수 있는거니?....

# 뭘 하겠다는 남자에게 힘 빠지게 만들지 마라. 

어차피 남자가 시동을 걸어도 운전은 여자가 하는 거다. 속도는 얼마든지 여자가 조절할 수 있다. => 내가 어떤 아이디어를 말했을 때 긍정적으로 바라봐 주기 보다는 끝없이 부정적인 안되는 이야기만 하는 경험을 해봐서 그런지 와닿았던 문구

# 기술은 동기를 가질 때 위대해 진다.

# 항상 겸손해야 하지만 동시에 자긍심을 가져라.

그대가 지금 작성한 코드, 지금 읽은 책, 지금 공부한 내용을 그대보다 잘 아는 사람은 지구상에 없다. 모든 걸 알고 있는 것처럼 보이는 다른 사람들도 그대와 마찬가지로 불안해하고, 위축되고, 두려워하면서 살아가고 있다. 자긍심이란 그런 타인을 돕고자 하는 마음가짐의 다른 이름이다. [임백준 칼럼 중]

# 좋은 코치는 스스로 뛰는 사람이 아니라, 선수가 원하는 포지션에서 마음껏 뛰게 해주는 사람이다.

이걸 실무에 적용시켜보자면 팀장의 역할도 비슷한 것 같다. 팀원들의 감정과 욕구를 잘 이해하고 원하는 업무를 주며 자극을 줄 수 있는 사람이야 말로 좋은 팀장이다.

# 문화는 한 두 사람이 주도해서 형성되는게 아니라, 거의 대부분의 미국 사람들이 집에서 신발을 신는 것과 같이 모두에게 자연스럽게 스며든 것이어야 한다.

 

 

반응형
반응형

저도 물론 컴퓨터공학과를 나왔지만 취업하기 위해서 공부할 내용들이 되게 많았던 것 같아요.

자료구조, 알고리즘, 네트워크, 데이터베이스, 컴퓨터구조 등등....

물론 대학생 기간 동안 했던 프로젝트 등도 중요하지만 주요 과목들의 내용들을 숙지하는 것이 중요할텐데요.

이부분에 대해서 회사동기(7년차 개발자)와 함께 이야기 나눠봤어요~

관심있으신 분들은 참고 부탁드려요

https://youtu.be/t9ZoX31Oj_M

 

반응형
반응형

남자 서른셋의 다이어트가 시작되었다. 

2021년 4월 1일부터 시작 된 다이어트! 바디프로필을 목표로 100일을 잡고 진행중이다.

먼저 평상시 헬스를 꾸준히 해왔었지만 너무 먹기 위한 운동을 했어서 그런지 한 번은 다이어트가 필요하다고 생각했다.

먼저 4월 1일 인바디 상태부터 체크v

그래도 운동은 꾸준히 해왔었기 때문에 근육량이 적은편은 아니였다.

문제는 지방이 많아 거의 체지방률이 20%를 향해 나아가고 있었다.

그리고 50일 후인 5월 20일 다시 인바디!!! ( 체지방만7.7kg 빼버렸다!!! ) 사실 제목에는 반올림해서 8키로라고...

무엇보다도 근육량은 잃지 않고 상승다이어트에 성공했다!!!

첫 달은 1700kcal (단백질은 180g)정도 섭취를 시작으로 현재는 1500kcal 아래로 섭취하고 있는 중이다.

고구마 닭가슴살만 먹지 않고 다양한 음식을 섭취하며 빼는 중이다.

식단에 대한 자세한 정보와 운동일지가 혹시나 궁금하시다면 인스타그램 @beoms.diary 에 자세하게 기록해놓았다.

닭가슴살, 고구마만 먹지 않았다.

참치비빔밥, 돼지뒷다리살 볶음, 요거트, 단백질쉐이크, 현미떡, 닭가슴살오트밀죽 등 다양하게 먹으며 즐겁게 식단하고 있다.

간단히 운동일지도 몇개 공유해본다.

무엇보다도 근손실 없이 지방만 빼는데 가장 큰 도움을 주었던 건 하루 1만보 걷기 였던 것 같다.

뛰는건 싫어하기도 하고 무릎에도 안좋아 대부분 유산소는 하루종일 1만보를 채우는 것으로 대신 하였다.

걷는 것 만큼 근손실없이 지방을 태우는 좋은 방법은 없는 것 같다!!!

 

 

https://www.youtube.com/watch?v=R1DE_e0Np-E&t=5s 

 

반응형
반응형

간단한건데 해당 옵션을 모르면 헤메는 경우가 있어 기왕 관련 작업한거 정리해보려 한다.

일반적으로 쉘스크립트에서 파일이 존재하는지 확인하고 싶다면 아래처럼 사용하면 된다.

if[ -e $FileName ]; then
	echo "file exist"
else
	echo "file not exist;
fi

주요 옵션 몇개만 살펴보자면

-c : 파일이 존재하고 특수문자가 있는지 체크 (File exists and is character special)

-e : 파일이 존재 하는지 체크 (File exists)

-d : 파일이 존재하고 파일이 폴더인지 체크 (File exists and is a directory)

-f : 파일이 존재하고 보통 파일인지 체크 (File exists and is a regular file)

-h : 파일이 존재하고 symbolic link 파일인지 확인 (File exists and is a symbolic link (same as -L)

-r : 파일이 존재하고 read 가능한 파일인지 확인 (File exists and read permission is granted)

-w : 파일이 존재하고 쓰기 가능한 파일인지 확인 (File exists and write permission is granted)

-s : 파일이 존재하고 0size 파일이 아닌지 체크 (File exists and has a size greater than zero)

 

반응형
반응형

스프링부트 사용하면서부터 RestTemplate을 많이 사용하여 API개발을 해왔었다.

하지만 최근에 알게된 사실은 블로킹 API로 리액티브 기반의 애플리케이션에서의 성능을 떨어트리는 원인이 될 수 있다는 걸 알게 되었다. 또한 Spring5.0버전부터는 RestTemplate은 유지모드로 변경되고 향우 deprecated될 예정이라고 한다.

따라서 대안으로 Spring에서는 WebClient사용을 권고하고 있으며 다음과 같은 장점이 있다.

  • Non-blocking I/O
  • Reactive Streams back pressure
  • High concurrency with fewer hardware resources
  • Functional-style, fluent API that takes advantage of Java 8 lambdas
  • Synchronous and asynchronous interactions
  • Streaming up to or streaming down from a server

WebClient에 대한 자세한 사용법에 대해서 알고 싶다면 아래의 블로그 글을 참고하자.

medium.com/@odysseymoon/spring-webclient-%EC%82%AC%EC%9A%A9%EB%B2%95-5f92d295edc0

 

Spring WebClient 사용법

Spring 어플리케이션에서 HTTP 요청을 할 땐 주로 RestTemplate 을 사용했었습니다. 하지만 Spring 5.0 버전부터는 RestTemplate 은 유지 모드로 변경되고 향후 deprecated 될 예정입니다.

medium.com

 

스프링공식문서

www.baeldung.com/spring-webclient-resttemplate

 

Spring WebClient vs. RestTemplate | Baeldung

Learn how to make server-side HTTP calls using WebClient and RestTemplate.

www.baeldung.com

 

반응형
반응형

최근 읽고 있는 '자바 최적화'라는 책을 보다가 몰랐었던 내용이 있어 기록할겸 남겨본다. 

자바7 이전 리소스 사용후 닫는 것은 온전히 개발자의 몫

    public void readFirstLineOld(File file) throws IOException {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(file));
            String FirstLine = reader.readLine();
        } finally {
            if (reader != null) {
                reader.close();
            }
        }
    }

 

자바7 부터 언어 자체에 추가된 try-with-resources 생성자를 이용하면 try키워드 다음의 괄호 안에 리소스(AutoCloseable 인터페이스를 구현한 객체만 가능)를 지정해서 생성할 수 있다. 이로써 try 블록이 끝나는 지점에 개발자가 close() 메서드 호출을 깜빡 잊고 빠뜨려도 자동으로 호출된다. close() 메서드는 방금 전 예제와 똑같이 호출되고 비지니스 로직의 예외 발생 여부와 상관없이 무조건 실행된다.

    public void readFirstLineOld(File file) throws IOException {
        try( BufferedReader reader = new BufferedReader(new FileReader(file))) {
            String FirstLine = reader.readLine();
        }
    }

코드가 훨씬 심플해졌다. 하지만 try-with-resources 생성자 사용시 자동으로 close() 를 호출해주는 것을 몰랐다면 finally 코드를 생성해 그 안에서 또 close를 호출하려고 하였을거다...

위의 예에서는 catch(IOException exception) {} 과 같이 별도로 에러처리를 안해주고 그냥 상위로 exception을 그냥 던져버리는데 사실 좋지 않다. 항상 에러 발생시 catch 내부에서 잡고 로깅해주고 처리해주는 것이 좋다.

이번 포스팅을 하며 느낀점은 기본에 좀 더 충실한 공부가 필요할 것 같다.

 

반응형

+ Recent posts