데이터베이스의 특징에 대해 설명해주세요.
DB : 엑셀과 비슷하지만 컴퓨터 언어로 제어가 가능하고 웹이나 앱을 통해 공유가 가능하다.
=> 누구나 접근, 편집 가능
(특징)
1. 실시간 접근성(Real-Time Accessibility): 실시간 처리에 의한 응답이 가능해야 한다. (바로바로 달라는 데이터를 줘야함)
2. 계속적인 변화(Continuous Evolution): 새로운 데이터의 삽입(Insert), 삭제(Delete), 갱신(Update)로 항상 최신의 데이터를 유지한다.
3. 동시 공용(Concurrent Sharing): 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다.
4. 내용에 의한 참조(Content Reference): 데이터베이스에 있는 데이터를 참조할 때 사용자의 요구에 따른 데이터 내용으로 데이터를 찾는다.
데이터베이스 언어(DDL, DML, DCL)에 대해 설명해주세요.
DDL(데이터 정의어 D=definition) : 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어
ex) CREATE, ALTER, DROP
DML(데이터 조작어 M=maniplate) : 데이터를 CRUD할때 사용되는 명령어
ex) SELECT, INSERT, UPDATE, DELETE
DCL(데이터 제어어 C=controll): 객체들을 사용하도록 권한을 주고 회수하는 명령어들을 말함.
ex) GRANT, REVOKE (아직 안써봄)
트랜잭션이란 무엇인지 설명해주세요.
데이터 베이스는 트렌젝션 단위로 db에 값을 저장한다 = 데이터베이스를 변화시키 위해 수행하는 단위
ex) 송금을 하는 경우는 출금과 입금이 동시에 일어남
=> 출금과 입금을 한 트렌젝션으로 묶는다.
만약 출금이 일어났는데 입금이 일어나지 않으면 큰일남.
그래서 이렇게 오류가 발생하는 경우 롤백을 통해 db를 원래대로 만든다.
(용어정리)
커밋: 트렌젝션이 끝나서 db에 변화를 일으킴
롤백: 트렌젝션이 비정상적으로 끝 db를 이전으로 되돌
<배운점>
1. JPA에서 받는인자는 Entity이다
2. Spring Data JPA를 이용하면 인터페이스만 선언해도 바로 선언하여 멤버함수들을 사용할수 있다
3. DTO와 Entity 설계방법
entity 내부에 toDTO 멤버함수를 두어 entity=>DTO를 쉽게 만든다. DTO도 마찬가지로 toEntity를 만든다
entity, DTO 둘다 @Builder를 생성자로 만들어 이 둘을 다른 클래스에서 생성할때 .builder로 가독성이 좋게한다.