본문 바로가기

개발

(66)
[JPA 기본] 1. 강좌 소개 김영한님의 'JAVA ORM 표준 JPA 프로그래밍 - 기본편' 강의를 들으며 정리한 노트입니다. 나는 왜 JPA를 공부하는가 JPA가 자바의 객체 지향 관점에 적합하다는 것은 잘 알고 있었다. 하지만 러닝커브+현재팀에서 사용하지 않음(우리는 SqlMapper MyBatis를 사용한다)을 핑계로 공부를 미뤄왔다. 이번에 JPA를 사용하는 회사로 이직하면서, 1월 입사를 앞두고 부랴부랴 공부를 시작했다. (아자아자!!) DB 접근 방식의 발전 과정 JDBC -> MyBatis, JdbcTemplate -> JPA JPA 실무 도입 왜 어려울까? 객체와 테이블을 효율적으로 매핑하도록 설계하는 노하우가 필요하다 강의 목표 객체와 테이블 설계 매핑 - 객체와 테이블을 제대로 설계하고 매핑하는 방법 - 기본 키와..
static import 란 [static import란] 자바 1.5부터 static import가 지원된다. import에 static을 붙이면, import된 정적 멤버필드, 정적 메서드는 클래스 이름 없이 접근 가능하다. [static import 전] line5: 일반 import line23: Assertions 클래스를 명시해준 후, assertThat static 메서드를 사용한다. [static import 후] line 8: import static org.assertj.core.api.Assertions.*;
[JPA] Entity 설계시 ID 값을 Long으로 지정하는 이유 JPA 공부중 의문이 생겼다. 왜 id는 int, long, Integer가 아닌 Long을 사용할까? 1) int가 아닌 이유 long이 더 많은 값을 저장할 수 있다. (비교) int - 저장 공간: 32 bit - 값의 범위 : -2147483648 ~ 2147483647 long - 저장 공간: 64 bit - 값의 범위: -9223372036854775808 ~ 9223372036854775807 2) long 대신 Long 쓰는 이유 long은 primitive type으로, 값이 없을 경우 0으로 초기화된다. 따라서, id가 없어서 0으로 세팅이 된 것인지, 아니면 실제 값이 0인지 데이터만 보고 판별할 수 없다. 반면 Long은 wrapper type으로, 값이 없을 경우 null로 초기화..
[Linux] 파일 접근 권한 변경 디렉토리 소유권 변경 chown {소유권자}:{그룹식별자} 파일명 # 예시 chown jenkinsuser:jenkinsuser server.log 레퍼런스 https://araikuma.tistory.com/117 [Linux] 파일 관리 - chown 파일/디렉토리 소유권 변경 소유권 확인 먼저 소유권을 확인하기 위해서는 아래 명령어로 확인이 가능하다. ls -al 위 명령어를 입력하면 아래와 같은 형태로 결과물이 나온다. -rw-r--r-- 1 kimkc staff 36864 5 10 2015 Currency.db 여기 araikuma.tistory.com
[웹 백엔드 시스템 구현 스터디] 1주차 기록 1. Controller vs RestController 1. @Controleller 1.1 SpringMVC 구조에서 VIEW를 반환하기 위해 사용 1.2 Data 반환 (Json 형태) @ResponseBody 애노테이션 추가 2. @RestController - SpringnMVC Controller에 ResponseBody 추가 된 형태 - 용도: Json의 형태로 데이터 반환 - 반환시 주의사항: 데이터와 상태 코드를 함께 반환할것. // 예. return ResponseEntity.ok(user) 2. ResponseEntity 응답 값 + 응답 코드 반환 3. Component 애노테이션 Bean으로 객체 등록 위와 같은 에러가 났다. 이유 @Component 애노테이션 붙이자. 4. se..
[mac] 특정 포트를 사용중인 프로세스 확인, 종료하기 ## 1. 포트 번호 확인 sudo lsof -i : 15240 ## 2. 프로세스 종료 sudo kill -9 (PID) ## 2번 예 sudo kill -9 15240 * kill -9 PID에서 -9의 의미 해당 명령을 커널 레벨에서 보낸다는 뜻. (->무시될 수 없는 명령이므로 무조건 수행한다) 9가 없을 경우 15가 기본 값으로 전송되며, 이는 정상적으로 종료함을 뜻한다 * 레퍼런스 https://new93helloworld.tistory.com/138 [꿀팁] mac - 특정 포트를 사용중인 프로세스 확인/종료 mac - 특정 포트를 사용중인 프로세스 확인/종료 node 작업을 프로젝트를 넘나들면서 하다보니 이유는 모르겠지만 터미널이 꺼졌는데도 불구하고 port상태는 listen인 경우가 있었..
DB 인덱스 기초지식 * 사내 위키에 정리했던 발표 자료를 블로그로 옮겨왔습니다. * 발표일: 2020.07.21 인덱스란 (기본 동작 원리) 인덱스를 비유하자면.. 책의 목차! e.g. 100000페이지 책에서 'DEADLOCK'을 찾으려 한다. 어떻게 찾을까요? -> 특정 카테고리에 속해있을 것. 해당 카테고리 찾자 인덱스의 목적 인덱스 없이 테이블 풀스캔시 비용이 커집니다. -> WHERE 구문과 일치하는 열을 빨리 찾기 -> 모든 데이터 조사 필요 없이 중간에서 검색 위치를 빠르게 잡아 내기 인덱스, 어떻게 빠르게 동작하나요? 인덱스 탐색 원리 중 하나: B 트리! (Balanced Tree) 중간 값을 기준으로 좌우 작은 값, 큰 값으로 나뉩니다. 인덱스 사용 언제가 적합할까? - 데이터 양이 많고 검색이 변경 (U..
gradle의 세팅, project structure을 왜 안 따라갈까. cannot find symbol List.of 발생. 이유를 찾아보니 sourceCompatibility를 따라간다고 한다. 하지만 나는 build setting에서 intelliJ를 기본 환경으로 세팅했는데.. 왜 gradle을 따라가는지 찾아봐야겠다..흑흑