본문 바로가기

CS

(21)
[JPA] 더티 체킹(dirty checking) 정리 JPA의 더티체킹이란 무엇인가요? 더티 체킹이란 영속성 컨테이너가 관리하는 엔티티의 상태를 감지해서, 변경된 부분이 있다면 자동으로 트렌젝션이 끝나는 시점에 데이터베이스 반영하는 기능이다. dirty는 "엔티티 데이터의 변경된 부분"을 뜻하며 dirty checking은 변경된 부분을 감지한다는 의미이다. 따라서 개발자가 update에 관련된 쿼리를 작성하지 않아도 되기 때문에, 코드의 복잡성을 줄일 수 있다는 특징이 있다. 더티체킹의 순서 영속성 컨텍스트는 엔티티를 조회할 때 시작되며, 이후 변경을 감지한다. 준영속/비영속 상태의 엔티티는 더티 체킹의 대상이 되지 못한다. Transaction이 커밋되기 전까지는 영속성 컨텍스트는 변경 사항을 추적하고, DB에 반영하지 않는다. Transaction이 ..
JPA의 필요성 JPA는 언제 필요하고 언제 필요하지 않은지 설명해주실 수 있나요? JPA 이전 반복적인 코드 현대 웹 애플리키이션에서는 대부분 관계형 데이터베이스(RDB)가 쓰인다. 그러다 보니 객체를 관계형 데이터베이스에서 관리하는 것이 무척 중요해졌다. 하지만 코드의 대부분이 어플리케이션 코드보다 SQL로 가득차게 됐다는 것이다. 이는 관계형 데이터베이스가 SQL만 인식할 수 있었기 때문이다. 그렇기 때문에 CRUD SQL을 매번 생성해야 했다. 이런 문제로 인해 자바 클래스는 아무리 잘 설계한다고 해도 결국은 SQL을 통해 저장, 조회가 가능했고 SQL들이 늘어났다. 패러다임 불일치 문제 객체와 관계형 DB의 차이가 생기는 것을 말한다. 관계형 데이터베이스와 객체지향 프로그래밍 언어의 패러다임이 서로 다른데 객체..
[Java] Override와 Overload Override와 Overload 를 설명해주실 수 있을까요? Overload 매개변수의 개수나 타입이 다르고 이름이 동일한 메소드들 리턴 타입은 오버로딩과 관련 없다. public class Override { public int getSum(int i, int j){ return i+j; } public int getSum(int i, int j, int k){ return i+j+k; } } 메소드 이름이 동일하고 매개변수의 개수가 서로 다르기 때문에, 두 메소드는 한 클래스 내에서 공존하는데 문제 없다. public class Override { public double getSum(int i, int j, int k){ return (double) i+j+k; } public int getSum..
Call by Value / Call by Reference Call by reference란 무엇이고 보통 어떻게 쓰이나요? Call by reference는 함수의 매개변수에서 주소값을 참조, 즉 객체를 참조하고 있기 때문에 메소드에서 만약 데이터의 값이 수정되었다면 실행이 끝나도 메소드를 호출한 변수에서는 참조를 통해 수정된 데이터를 확인 할 수 있습니다. 메소드가 호출되면 스택에 실제 값이 복사되는 것이 아닌 객체를 참조 할 주소값을 가지고 있습니다. 메소드를 호출한 변수와 메소드의 매개변수는 스택에 있는 같은 주소값을 가지게 되고 이 주소는 힙 메모리 영역에 있는 실제 데이터를 가르키고 있습니다. 따라서 메소드 실행이 끝난 뒤에도 메소드를 호출한 변수에서는 같은 주소를 참조하고 있기 때문에 변경된 데이터를 확인 할 수 있다. Call by Value(값에..
컴퓨터의 4가지 핵심 부품 본 글은 "개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제" 공부하고 정리한 글입니다. 컴퓨터가 이해하는 정보 컴퓨터는 0과 1로 표현된 정보만을 이해하고 있다. 0과 1로 표현되는 정보에는 크게 두가지 종류가 있는데 데이터와 명령어가 있다. 데이터 명령어 데이터는 정적인 정보들을 말한다. 정적인 정보 예시는 숫자, 문자, 이미지, 동영상 명렁어를 위해 존재하는 일종의 재료 컴퓨터를 실질적으로 작동시키는 더 중요한 정보는 명령어이다. 데이터를 움직이고 컴퓨터를 작동시키는 정보 ex) "1"과 "2"는 데이터이고, '더하라 1,2'는 명령어이다. 컴퓨터의 4가지 핵심 부품 중앙처리장치(CPU) : CPU내부에는 ALU(산술논리연산장치), 제어장치, 여러 레지스터 주기억장치(메모리, RA..