본문 바로가기

분류 전체보기76

Java 데이터 타입, 변수, 배열 자바 데이터 타입, 변수, 배열 학습 목표 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다. 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var 1 프리미티브 타입 종류와 값의 범위 그리고 기본 값 기본형 Primitive type char : 문자형, 문자의 유니코드(정수 2byte)가 저장된다. 그러므로 정수형, 실수형과 연산도 가능 int : 정수형. CPU가 가장 효율적으로 처리할 수 있는 타입, 대략 20억까지 표현 가능. long : 7~9자리 수 계산할 때는 넉넉하게 long(19자리)로 .. 2022. 7. 31.
코드스쿼드 부트캠프 학습 내용 부트캠프 코드스쿼드 백엔드 과정에서 배운 내용을 정리해두었습니다. 기간 2022.01 - 2022.07 주 기술 스택 Java, Spring Boot, JPA, MySQL Computer Science shell script 작성 DB procedure 작성 HTTP 요청/응답의 웹서버 구현 비동기 이벤트 처리 OOP - 순수 Java 프로젝트 로또를 순수 자바로 짝프로그래밍으로 구현함으로 협업과 OOP개념 구현을 통해 습득 Pull Request 리뷰 내용 웹 백엔드 프로젝트 주 기술스택 : Java11, Spring Boot2.7, JPA, MySQL (협업 프로젝트)airbnb 클론 프로젝트 (단독 프로젝트)Github Issue 클론 프로젝트 (단독 프로젝트)반찬가게 프로젝트 2022. 7. 19.
이슈트래커 프로젝트 회고 깃헙의 issue를 비슷하게 만들어 보는 프로젝트로 3주간 진행되면서 마지막 프로젝트였다. 이슈에는 레이블, 마일스톤, 코멘트등 연관된 도메인이 많아 JPA를 공부하기 좋은 프로젝트였다. 그리고 기존까지는 API가 업무 도메인에 초점이 맞춰져 있었다면 이슈트래커는 업무 도메인은 평범하나 CRUD가 반복되는 API작업이 많아 오히려 마음에 들었다. 첫 프로젝트인 todo를 하면서 반복되는 작업 속에서 전체 구조등 다시 리팩토링 해야하는 부분들이 생긴다는 것을 어렴풋이 느꼈기에 그런 부분들을 더 피부로 느끼면서 개발에서 어떤 것이 부족한지 더 공부해야 하는 영역은 어떤 것인지 직접 느껴보고 싶었다. JPA 익히기 JPA는 2번째 적용하는 것인데 처음부터 큰 도메인인 이슈 CRUD를 개발하려고 하니 시작이 지.. 2022. 7. 10.
airbnb 프로젝트 회고 airbnb 프로젝트 회고 에어비엔비 프로젝트를 마스터가 선정한 이유는 무엇일까 에어비앤비는 GPS로 인식되거나 사용자가 작성한 검색어 기반으로 검색 위치에서 가까운 숙소를 찾아준다. 공간 데이터를 다루게 되는데 일반적인 도메인과 다른 것은 카테고리 안에 속한 데이터를 보여주는 것이 아닌 위치 기반으로 반경을 설정하여 데이터를 추출한다. 반경 내에 있는 데이터는 어떻게 추출할 수 있을까? 이것이 이번 프로젝트의 업무 도메인이다. 예전에는 공간 데이터 추출을 위해 CLOB등의 데이터형태로 저장된 지도 데이터를 사용하였다고 한다. 이번 프로젝트를 통해서 데이터베이스에 공간정보를 저장하는 데이터 타입이 있다는 것을 알게 되었다. 새로운 도메인을 접하면서 내가 공부했던 과정과 겪은 어려움을 적어보려고 한다. 데.. 2022. 6. 19.
@GeneratedValue 기본키 전략 4가지 DB에 따라 기본키 생성 전략의 디폴트 값이 달라지기 때문에 MySQL을 기준으로 구현한면, 원하는 전략을 명시적으로 코드로 남겨두시길 추천한다. 결론 : AUTO 전략이 DB마다 다르게 채택되고, Mysql에서는 sequence가 따로 없기 때문에 table 전략이 결국 사용됨을 알았습니다. 조사하면서 table 전략은 사용 이유가 확실할 때만 사용하는 것이 좋을 것 같다고 생각했는데요. 지금의 경우 PK가 숫자로만 구성된다면 굳이 table로 PK가 관리되지 않아도 될 거라 판단합니다. @GeneratedValue 로 기본키 전략 4가지 1. IDENTITY 전략 사용법 : @GeneratedValue(strategy = GenerationType.IDENTITY) DB의 AUTO_INCREMENT를.. 2022. 6. 5.
@Embeddable 사용 이유와 장점 @Embeddable 사용한 이유와 장점 관련성이 있는 값들을 의미 있는 객체로 묶어서 관리하면서 객체의 응집도가 높아지는 효과를 기대하고 사용. 공유할 수 있는 객체 이면서 변경할 수 없도록(불변) 사용가능한 것이 @Embedded 타입의 장점이라고 생각합니다. import javax.persistence.Embeddable; @Embeddable public class Address { private String country; private String city; private String gu; } 2022. 6. 4.
JPA 엔티티 양방향 참조에 대한 생각 JPA 엔티티 양방향 참조에 대한 생각 양방향 참조에 대한 질문 양방향 참조를 걸어주신 이유가 있을까요? 양방향 참조를 걸어줄 필요가 없다면, 단방향 참조를 활용하시는 것이 좋습니다. 왜 그럴까요? 단방향 참조 외에 양방향 참조를 굳이 써야 할 경우가 있다면, 언제일까요? 엔티티 참조에 대한 내 생각 먼저 양방향 참조로 엔티티를 모두 작성하고 개발하였다. 이유는 모든 연관관계를 양방향으로 우선 두고, 기능을 개발하면서 하나씩 고민해나가는 방향으로 잡아가기로 했었기 때문이다. 일단 DB 기반으로 관계가 있을수 있다는 것을 표시하고 개발해 나가면서 해당 관계의 필요유무를 고민해 나가려고 했던 것이었다. 그러면서 참고자료의 내용을 읽어보면서 단방향 참조를 활용하는 것이 좋은 이유를 생각해보면, 올바르게 모델링.. 2022. 6. 4.
MySQL 초단위 precision 자릿수 넘어갈 경우 MySQL은 초단위 precision 자릿수 지정 SELECT COUNT(1) FROM mydate WHERE created_at BETWEEN '2022-05-27T00:00:00.000000' AND '2022-05-27T23:59:59.9999999'; 이렇게 조회하면 2022년 5월 28일 00시 00분 row가 DB에 들어가 있는 경우에, 나올 수 있다. 이유 해당 내용은 초단위 precision의 단위가 넘어갔을 때, 다음 시간을 표현하는 2022년 5월 28일 00시 00분이 포함되기 때문. ToDo 해당 내용은 조금 더 정리해보자 2022. 6. 3.
Mysql 날짜관련 data type, datetime과 timestamp 차이 datetime과 timestamp의 차이 timestamp mysql은 저장할 때 현재 타임존에서 UTC로 변환하고, 조회할 때 UTC에서 현재 시간대로 변환한다. 타임존 변경 작업시 부하가 발생할 수 있다. 하지만 요즘 트렌드는 timestamp를 사용하는 것이라고 한다. 그정도 부하는 허용 가능한가보다. 기본으로 각 연결의 타임존은 서버의 시간이고, 타임존은 connection별로 설정할 수 있다. Mysql에서 사용할 time zone 셋팅 방법은 여러가지이다. 시스템 변수의 time_zone 값을 사용할 수 있다. mysql서버 시작 시 --timezone 옵션 값을 줄 수 있다. 등 다른 방법도 있다. 1970-01-01 00:00:01부터 2038-01-19 03:14:07까지 지원 [확인].. 2022. 6. 2.
스프링부트 버젼 - 마이너 버전 'org.springframework.boot' version '2.7.0' 끝이 0으로 끝나는 버젼은 마이너 버전이라고 한다. 마이너 버전은 사용 추천하지 않는다. 2022. 6. 1.
Mysql 스토리지엔진, InnoDB 와 MyISAM InnoDB 가 무엇이고, 다른 DB 엔진과 차이 알아보기 InnoDB란 무엇인가 Storage Engine : 데이터베이스에서 데이터를 접근하는 방식 frm 파일에 접근하는 속성을 설정 스토리지 엔진은 DB에서 데이터를 어떤 방식으로 저장하고 접근할 것인지에 대한 기능을 제공합니다. 스토리지 엔진에 따라 데이터 접근 속도, 안정적인지, 트랜잭션 기능을 제공하는지 등의 차이가 발생합니다. InnoDB란 무엇 스토리지 엔진의 한 종류 스토리지 엔진 스토리지 엔진은 데이터 읽기/쓰기 작업을 처리한다. 데이터를 디스크로 저장하고 읽어오는 역할 담당. 데이터를 디스크로 저장하고 읽어오는 역할을 담당하는 스토리지 엔진은, 데이터를 물리적 디스크에 저장하는 방식을 클러스터드 인덱스 방식과 넌 클러스터드 인덱스 방식.. 2022. 6. 1.
process command finished with non-zero exit value 1 인텔리제이 실행 에러 처음 프로젝트 셋팅하고 인텔리제이 실행 에러가 나는데 이럴때가 가장 난감하다. 왜인지는 나중에 정리해놓더라도 발생한 실행 에러와 해결 방법은 적어두자. 에러 메시지 process command finished with non-zero exit value 1 > Process 'command 'java.exe'' finished with non-zero exit value 1 * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. 해결 방법 File/Se.. 2022. 5. 4.