개요 부트캠프에서 개인 미션으로 중고 물품 거래 사이트의 백엔드 부분을 만다는 미니 프로젝트를 진행했다. 그 중 상태를 나타내는 status 변수를 enum을 사용해서 나타내고 싶었다. 처음에 물품 Entity에 적용을 할 때 판매중, 판매완료 두 개를 나타냈는데 DB에 저장이 잘 됐다. 근데 거래를 하는 로직에서 자꾸 DB에 숫자가 저장이 되길래 왜 그런거지 싶어서 찾아보았고 기록해서 남기고 싶었다. (enum 자주 사용할 것 같아서...) 문제점 status에 제안이 저장되길 바랬는데 결과는 전부 0이라고 저장됐다. 처음에 매핑까지 다 했는데 왜 그런건가 했다. 해결 enum 내부에 매핑된 값을 받는 getStatus 메서드를 만든다. status의 타입을 enum 이 아닌 String으로 해서 ge..
개요 Java를 공부하고, Spring을 사용하면서 지속적으로 듣는 얘기가 SOLID 원칙이다. 프로그램을 설계하는 과정에서 SOLID 원칙을 지키면서 개발을 진행해야 한다고 다들 언급해주시길래 이번에 공부하고자 포스팅을 한다. SOLID 원칙 SOLID란 객체 지향 프로그래밍을 하면서 지켜야하는 5대 원칙으로 유지보수의 용이성, 유연하고 쉬운 확장 등 소프트웨어를 만드는 것에 있어 효율적으로 프로그래밍을 할 수 있게 해준다. SOLID 원칙은 5가지로 이루어져 있는데, 각각 SRP, OCP, LSP, ISP, DIP가 있는데 이를 하나씩 살펴보려고 한다. 1. 단일 책임 원칙 (SRP, Single Responsibility Principle) - 클래스는 단 한 개의 책임을 가져야 한다. - 클래스를..
개요 Java 공부를 시작하고 뭣도 모를 때에 우연히 본 어떤 게시글에서 이런 말을 본 적 있었다. 'Java를 사용하는 개발자라면, 적어도 Java가 어떤 특징을 갖고 JVM이 어떻게 동작하는지는 알아야 합니다.' 이 말을 듣고 한번이라도 이렇게 생각해본 적이 있었나? 싶었고, 부트캠프에 들어와 강사님들이 해주시는 말씀들에서도 JVM의 작동 원리에 대해서는 알고 있어야 한다고 하셨다. 그래서 이제는 어느 정도 공부를 진행한 시점에서 이를 공부해보고자 한다. Java란? Java는 프로그래밍 언어 중 하나로 C/C++ 스타일의 장점은 취하고, 사용하지 않는 부분은 삭제한 비교적 쉽게 습득 가능한 언어이다. Java 언어의 모토로는 "Write Once Run Anywhere"가 있다. 이 말인 즉, 한번..
개요 특강을 들으면서, 강사님이 해주신 말씀 중에 클래스 메소드와 인스턴스 메소드의 차이를 알아두면 나중에 개발을 하게 될 때, 효율적으로 코드를 작성할 수 있다고 알아두라고 말씀해 주셨다. 전에도 차이가 궁금해서 정리해야지 했었는데, 이 부분을 강사님이 상기시켜 주셔서 꼭 공부하고야 말겠다 했던 것을 지금에서야 작성하려고 한다. (까먹기 전에 얼른 공부하고 기록해야지 안 그러면 평생 안 할거 같아서...) 클래스 메소드와 인스턴스 메소드 1. 클래스 메소드 흔히 알고 있는 static이 붙은 메소드 보통 메소드 중에서 인스턴스와 관계가 없는(인스턴스 변수 혹은 인스턴스 메소드를 사용하지 않는) 메소드를 클래스 메소드라고 한다. 특징 클래스 메소드는 인스턴스 변수를 사용할 수 없다. -> 이도 그럴 것이..
어떠한 이차원 배열이 있다. int[][] arr = {{0, 5}, {3, 2}, {1, 8}, {2, 7}, {3, 1}}; 만약 위의 이차원 배열을 오름차순 혹은 내림차순, 어떠한 원소를 기준으로 정렬을 하고 싶다면 어떻게 해야 할까? 이차원 배열을 정렬하는 방법은 크게 두 가지가 있다. 1. Comparator의 사용 import java.util.Arrays; import java.util.Comparator; int[][] arr = {{0, 5}, {3, 2}, {1, 8}, {2, 7}, {3, 1}}; Arrays.sort(arrays, new Comparator() { // 앞 원소를 기준으로 오름차순 정렬 -> 만약 중복인 경우 뒤 원소의 오름차순 정렬 @Override public ..