본문 바로가기

내일배움캠프 4기 스프링/내배캠 WIL📗

01. 30 ~ 02. 03/ 14주 차 WIL

728x90

JPA 심화 강의로 꽉 찬 일주일..!

1. JPA 심화 강의

JPA 심화 강의를 들으며 그동안 쓰면서도 알쏭달쏭했던 JPA 동작원리와 새로운 QueryDSL에 대해 알게 되었다. 확실히 처음부터 심화 이론을 듣고 시작하면 이론을 듣다가 지칠것 같은데, 먼저 사용해서 단순 사용에 좀 익숙해진 후에 이론을 배우는 지금 프로세스가 좀 답답한 느낌이 있을 수는 있지만, 그래도 진입 장벽을 가장 많이 낮추는 방법인 것 같다.

2. 자바 복습 : 후발대 수업 복습 및 과제

컬렉션 프레임 워크

 

리스트

- 요소의 저장 순서가 유지된다.

- 같은 요소의 중복 저장을 허용한다.

 

어레이리스트

- 배열을 이용한 리스트 -> 인덱스를 이용해 특정 요소에 빠르게 접근할 수 있다

- 배열을 이용하기 때문에 크기를 변경할 수 없다, 

- 기본 메서드 : 추가 ~ add(), 조회 ~ get(인덱스 값), 삭제 ~ remove(), for 반복문, 값 설정 ~ set(), 전체 삭제 ~ clear(), 정렬 ~ sort()

 

링크드 리스트

- 배열을 사용하지 않아 요소가 순차적으로 저장되지 않는다(저장 순서대로 인덱스가 부여되지 않는다)

- 기본 메서드 : 추가 ~ add(), 조회 ~ get(인덱스 값), 삭제 ~ remove(), for 반복문, 값 설정 ~ set(), 전체 삭제 ~ clear(), 정렬 ~ sort(), 값 확인 ~ contains()

* 처음과 마지막 값에 영향을 주고 싶다면 : ~First(), ~Last()

가장 많이 쓰는 것은 해시 셋 : 해시 알고리즘을 사용한 셋 인터페이스

cf ) 해시 알고리즘 : https://www.appsealing.com/kr/%ED%95%B4%EC%8B%B1-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/

 

해시 함수 이해를 돕기 위한 깊이 있는 가이드

해시 알고리즘은 암호를 검증하거나 파일을 전송하는 안전한 방법입니다. 이 기사를 읽고 해시 알고리즘을 심층적으로 이해해보세요.

www.appsealing.com

http://www.tcpschool.com/java/java_collectionFramework_set

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

- 요소를 순서에 상관없이 저장한다

- 중복 값을 허용하지 않는다

- 기본 메서드 : 추가 ~ add(), 삭제 ~ remove(), for 반복문, 값 설정 ~ set(), 전체 삭제 ~ clear(), 확인 ~ contains()

 

- 키 : 값으로 구성된 하나의 쌍을 저장하는 자료구조, 키를 가지고 값을 꺼내올 때 사용한다

- 요소의 저장 순서를 유지하지 않습니다.

- 키는 중복을 허용하지 않지만, 값의 중복은 허용합니다.

- 기본 메서드 : 추가 ~ put(), 조회 ~ get(키 값), 확인 ~ containsKey(키 값), 삭제 ~ remove(키 값), 전체 삭제 ~ clear(), for 반복문 안에서 키 값 확인 ~ keySet(), Value 확인 ~ values()

 

Wrapper Class

기본 자료 타입은 메서드를 가지고 있지 않고, 경우에 따라 객체만 인수로 사용할 수 있는 경우, Wrapper Class를 사용해 해당 기본 자료 타입의 변수를 객체에 담아 사용한다.

-> 객체에 담는 것을 박싱, 반대로 객체에서 꺼내는 것을 언박싱이라고 한다

-> JDK 1.5 이상 부터는 오토 박싱, 오토 언박싱 기능을 제공한다

 

Iterator

  • 프로그래밍에서 이터레이터는 개발자가 컨테이너, 특히 리스트를 순회할 수 있게 해주는 객체다. 이터레이터는 데이터베이스 커서와 동작이 유사하다.
  • 객체 지향적 프로그래밍에서 배열이나 그와 유사한 자료구조의 내부요소를 순회하는 객체
  • 배열이나, 셋, 맵을 순회하고 불필요한 데이터를 바로 삭제 할 수 있다.
boolean hasNext() 해당 이터레이션(iteration)이 다음 요소를 가지고 있으면 true를 반환하고, 더 이상 다음 요소를 가지고 있지 않으면 false를 반환함.
E next() 이터레이션(iteration)의 다음 요소를 반환함.
default void remove() 해당 반복자로 반환되는 마지막 요소를 현재 컬렉션에서 제거함. (선택적 기능)

 

과제

1. JPA는 무엇인가?

JAVA Persistence API, 자바 ORM 기술 표준으로 사용되는 인터페이스의 모음, ORM을 사용해 애플리케이션의 클래스와 DB의 테이블을 매핑시켜주는 자바의 기술이다. 개발자가 직접 SQL 쿼리를 날리지 않아도 된다는 장점이 있다

 

2. RESTful API란?

웹의 장점을 활용한 아키텍쳐, Http URI를 통해 자원을 표시하고 GET/POST/PUT/DELETE 등 Http 메서드를 통해 자원 처리방법을 명시한다. 명사로 자원을 표시하고, 세부 자원은 id를 덧붙인다

 

3. Controller, Service, Repository 가 무엇인가요?

MVC 패턴에서 각 계층을 의미한다. Controller는 각 기능에 맞는 URI에서 오는 요청을 받아 각 기능의 비즈니스 로직을 수행하는 Service 계층으로 요청 데이터를 전송하는 역할을 한다. Service는 요청 데이터를 받아 각 기능의 핵심 비즈니스 로직을 수행하고 그 가공된 데이터를 Repository에 전송한다. Repository는 Service에서 받은 가공된 데이터를 SQL 쿼리문의 형태로 DB에 쿼리를 날린다.

 

4. restAPI의 put 과 patch 는 어떤 차이점이 있을까요? 어떤 경우에 사용하면 좋을까요?

Put 메서드의 경우 요청 데이터가 그 자원의 전부를 새로 생성하거나 일부를 대체하며, Patch의 경우는 자원의 일부를 대체한다는 점에서는 Put과 같다. 다만, Put의 경우, 일부를 대체할 때 나머지 자원 값을 null값으로 바꾸는 반면 Patch의 경우 보내지 않은 데이터가 속하는 자원의 경우 데이터를 그대로 둔다는 차이가 있다.

또한 요청 URI에 자원이 속하지 않을 경우, Put의 경우 데이터를 새로 생성하지만, Patch의 경우는 새로 생성하지 않는다. 또한 Put의 경우는 멱등성을 가지고 있어, 같은 요청을 계속 날리는 경우에도 그 결과는 항상 같다.

 

5. 우리가 브라우저에서 구매한 도메인 주소를 입력하면 만들어 놓은 aws EC2 서버까지 전달이 되어서 해당 서버에게 요청을 보낼 수 있습니다. 이 과정이 상세하게 어떻게 진행되는지 설명해 보세요.

Aws의 서비즈 중 하나인 Route53을 이용해 도메인과 EC2 인스턴스 서버를 연결한다. Route53에서 호스팅 영역을 생성하고 그 호스팅 영역과 도메인을 네임서버로 지정하여 연결을 완료한다.

 

6. Rest 란 ?

자원(그 소프트웨어, 어플리케이션이 관리하는 모든 것)을 이름으로 구분하여 그 상태에 관한 정보를 주고받는 것이다. 자원을 이름으로 구분하는 것이 Http URI이고, 이를 Http 메서드로 처리하는 것이 Rest API이다. 정보의 전달 형식은 Json, XML 파일을 통해 전달이 이루어진다. 

 

7. RDBMS란, H2란, SQL 이란?

RDBMS란 관계형 데이터베이스 관리시스템의 준말로, 모든 관계형 데이터베이스를 포함된다. 대표적으로는 MySQL, MariDB 등이 있다. H2란 자바로 작성된 RDBMS로, 다른 RDBMS와의 가장 큰 차이점은 메모리에 데이터베이스의 내용이 저장된다는 것이다. 그렇기 때문에 데이터베이스의 내용은 서버의 생명주기를 따르며, 서버가 종료하는 경우에 그 데이터도 삭제된다. SQL은 RDB에 정보를 저장하고 처리하기 위한 프로그래밍 언어로, 해당 언어의 문법에 따라 쿼리문을 작성하여 날리면, 그 쿼리문에 따라 데이터베이스의 데이터에 영향을 줄 수 있다.

 

8. 객체와 클래스의 차이점?

객체는 그 클래스를 사용하여 만들어 낸 실체이다. 클래스는 객체를 정의하고 만들어내기 위한 설계도 혹은 틀을 말한다. 클래스의 인스턴스로 객체를 정의할 수 있고, 또 객체와 인스턴스를 구분할 수 있는데, 객체는 추상적인 개념인 반면 인스턴스는 실체 그 자체를 의미한다.

 

9. 캡슐화, 은닉화 / 상속, 다형성 을 설명하시오.

1) 캡슐화
데이터, 그리고 데이터를 활용하는 함수를 캡슐 혹은 컨테이너 안에 두는 것
캡슐=Class, 메서드에 인수가 필요없이 데이터에 직접 액세스할 수 있다
*캡슐화를 사용하여  클래스의 속성을 표시(접근,수정가능하도록)하거나 숨길 수 있다(데이터 감추기)

 

2) 은닉화

접근제어자 private를 사용해 외부의 접근으로부터 클래스의 속성 값을 감추는 것

외부로부터 데이터를 보호하기 위해 하는 것으로 캡슐화를 통해 객체지향 프로그래밍이 완성될 수 있도록 한다.


3) 상속
코드를 클래스 단위로 쪼갤 수 있고, 중복된 클래스를 만들 필요 없다
자식 클래스는 확장 명령어를 통해 부모 클래스의 모든 속성을 상속받는다

4) 다형성*
상속받은 부모 클래스의 메서드를 자식 클래스 단위에서 재정의(메서드 오버라이딩)하여 다르게 출력한다 (같은 자료형이어야 한다)
-> 조상타입 참조변수로 자손타입 객체를 다루는것
-> 클래스의 규칙은 유지하되, 구현방식과 다양성을을 확장할 수 있다는 장점이 있다.

 

FACTS

JPA 심화 강의

후발대 수업

FEELINGS

컬렉션 프레임워크에 대해 보다 단단하게 잡을 수 있었다. 내 자료구조로 만드려면 더 많은 연습이 필요하겠다.

FINDINGS

JPA 동작원리를 이해하게 되었다. 진짜 컴퓨터 공학은 그 발전 속도가 엄청 빨라 보인다. 단지 몇 년 만에 학문이 뒤집어지고 혁신이 계속 일어난다. 요즘 화제인 챗 GPT를 봐도 그렇고, IT를 통해 바라보는 세상의 변화는 정말 무섭도록 빨라서 그 파도를 타려면 정말 부지런해야겠다.

FUTURE

- 배운 것을 다른 사람들도 이해할 수 있게 설명하기

- 마음을 꺾으려는 여러 도전에 굴하지 않는 나

 

728x90