[Spring][5]TCP/JPARepository for CRUD[TCP통신과 JPA를 이용한 Repository 설계]
BackEnd/Spring

[Spring][5]TCP/JPARepository for CRUD[TCP통신과 JPA를 이용한 Repository 설계]

목차

- 알로하 프로토콜

- TCP/IP 프로토콜 (웹에서 하는 통신)

- JPA Repository와 CRUD


 

알로하 프로토콜

 

Cdma

코드분할 다중접속(영어: Code-Division Multiple Access, CDMA) 이동 통신에서 코드를 이용한 다중접속 기술의 하나이다. 1996한국 이동통신(현 SK텔레콤)에서 최초로 상용화되었다.


출처:

코드분할 다중접속위키백과, 우리 모두의 백과사전

https://ko.wikipedia.org/wiki/%EC%BD%94%EB%93%9C%EB%B6%84%ED%95%A0%EB%8B%A4%EC%A4%91%EC%A0%91%EC%86%8D

 

코드분할다중접속 - 위키백과, 우리 모두의 백과사전

코드분할다중접속(영어: Code-Division Multiple Access, CDMA)은 이동 통신에서 코드를 이용한 다중접속 기술의 하나이다. 1996년 한국이동통신(현 SK텔레콤)에서 최초로 상용화되었다.[1][2] 한국이동통신(

ko.wikipedia.org

주파수 통신, Cdma가 나오게 된 배경, 주파수 통신 == 알로하 통신

 

 

하와이는 섬으로 되어 있어서 선으로 통신하기 힘들기 때문에 데이터 송신에서 선으로 연결하지 말고 주파수로 통신하자고 얘기가 나왔는데요.

 

주파수를 쏘는 사람이 브로드캐스팅의 방법으로 쏘기 때문에 여러 방향으로다 펴 저 나가는데

불특정 다수에게 브로드캐스팅 가능합니다.

 

커넥션 되면 세션에 들어오고 정보를 넣게 된다.

 

브로드캐스팅의 예시로는 방송국에서 송신하면 우리가 리모컨으로 TV 채널을 선택해서 볼 수 있는 것과 같은 것이고, 계속 송신하지만 수신은 우리가 선택할 수 있습니다.

 

이 통신 방법으로 주파수를 사방으로 쏘며, 받는 사람이 받겠다고 해야 받을 수 있다.

 

이 통신 방법의 단점으로

  1. 비밀스러운 대화를 못함 
  2. 신호가 섞인다 -> 잡음이 많음 

그러나 사람은 소리를 구분해서 들을 수 있는데 컴퓨터는 그렇지 않습니다. -> 소리의 예시로 키보드 소리, 노래 소리, 목소리 등

 

잡음을 해결하는 방법으로

 

1. 블락(무시)하는 방법이 있는데, 시간이 너무 오래 걸려서 안 좋습니다.

 

2. 데이터 마킹을 할 기술로

송신데이터를 분할해서 보냅니다.

헤더를 붙이며 ( 데이터가 어디서 왔는지 알기 위해서 ) , 위 그림처럼 데이터의 이름을 재조립할 수 있습니다.

코드를 분할하고 던져주면 우리가 받아서 조립할 수 있음!

 


 

TCP IP 통신 (웹에서 하는 통신)

 

 

계층을 나누는 이유는 분리하기 위해서 함

책임분리시켜서 원활하게 업무(process)가 되게 합니다.

 

 

직렬화, 역직렬화 예시

 

 

TCP 통신을 자세히 보면

 

 

TCP 통신의 직렬화, 역직렬화

 

 

응용 프로그램을 결정하는 것은 클라리언트결정합니다.

즉, 응용프로그램이 포트를 결정합니다.

 

--

표현 계층 -> 암호화, 압축, 인코딩

--

세션 -> 세션이 되면 통신할 수 있음, 대화가 열림

내가 친구 집에 갈 때 전화를 한번 해서 물어보는 것이 예시!

--

TCP

 

/*

예시를 들어 홍 군 청군이 있고 홍 군이 양쪽에 있다면

전보(통신)를 보내서 서로 합의하에 양쪽이 한 번에 쳐야 하는 상태를 만들어야 한다.

홍   /청   /홍

100 /150 /100

중간에 탈취당 할 수도 있고 많은 가능성들이 있다.

*/

 

데이터의 신뢰가 중요함!!

 

 

TCP 통신신뢰성 있는 통신이라고 하는데,

위의 예시처럼 송신을 하고 수신을 합니다.

받았는지 확인하기 위해서 요청을 3번 왔다 갔다 하게 됩니다.

 

3 Way핸드 쉐이킹(악수 세 번)

신뢰성 있는 통신

안정적이지는 않지만

기본적으로 많이 쓰이는 통신입니다.

 

--

UDP 통신은


흔히 전화통신, 영상통신에서 쓰이며

TCP 통신에 비해서 신뢰성 없는 통신이라고 할 수 있습니다.

분석하고 추측 가능함!

일은 생각보다 잘 안 함(진짜 쪼금함) -> 책임이 없는 편임!(위의 예시)

 

 

웹에서 TCP 통신을 사용하는 하는 것은 정보가 정확하게 전달되어야 하기 때문입니다.

 

--

네트워크 -> IP 결정(논리적 연결)

논리적인 길 -> 논리적 연결

--

 

마지막으로 들어오게 되는 곳은 바로 

랜카드의 고유 식별자인데요, IP가 같더라도 제품의 어디에 접속할지 결정을 해야 합니다. 각각의 컴퓨터 핸드폰마다 모두 다 있습니다.

 


 

JPA Repository와 CRUD

 

 

 Repository는 컴퓨터 내에 있는 DB에만 접근 가능한 것이 아니라 여러 가지의 다양한 것들에도 DB로 연결이 가능합니다. 데이터를 액세스 할 수 있는 것들의 예로는 기본적인 file들이 있고, 외부 서버에 DB를 저장할 수 있으며 심지어 IOT에서는 사물인터넷으로 여러 가지 정보들을 가지고 와서 저장할 수 있습니다. 아래의 예시에서는 컴퓨터 내에 있는 마리아 DB를 활용하여 UserRepository 만들어 실습합니다. 

 

Repository에서 여러 DB로 연결 가능한 모습

 

 

 첫째로는 유저 인터페이스를 만듭니다. (UserRepository)

 

 

domain/user안에 만듭니다

 

UserRepository로 이름을 지어줍니다.

 

 

 

새로 만들어진 모습과 아직 비어있는 모습

 

 

우리가 만들어준 인터페이스컴퓨터 내에 있는 DB에 접근을 하던 외부 서버에 접근을 하든 간에

그것의 DB에 있는 데이터를 가지고 와서 자바 클래스로 만들 책임을 가지고 있습니다.

 

*Tips

모든 클래스마다 책임을 각각 가지고 있습니다.

레포지토리의 목적은 데이터를 들고 와서 자바 객체로 저장하는 목적임

*

 

 

JapRepository 를 

 

 

JpaRepository에 웬만한 것들을 미리 다 만들어져 있다.

JpaRepository에는 데이터 액세스뿐만 아니라 개발하기 편하게 공통적인 것을 미리 만들어 놓았습니다.

Jpa가 유저 테이블에 있는 것을 편하게 접근하게 해 줍니다. 테이블을 한 번에 다 당겨올 수도 있다네요.

 

만들어주는 사람 입장에서 Jpa공통적으로 쓰는 것들을 미리 만들어놓음

공통적으로 만들어 놓지 않는 것들은 우리가 구현을 해줘야 합니다.

 

 

JpaRepository를 extends함

 

 

Jpa레포지토리는

 

IOC 컨트롤러에 뜹니다

@Respository를 추가해서 그런 것뿐만 아니라 JpaRepository extends 하게 되면 자동적으로 Dispatcher가 인식해서 DI를 해주며 IOC에 추가해 준다네요.

  

*Tips

개발을 할 때, 테이 블하 나당 객체를 하나씩 만들어 줍니다. (예를 들면 User)

유저 컨트롤러도 만들어 줍니다

*

 

 

생성자 생성 후 의존성 주입

 

none 으로 설정된 모습

 

Ddl-auto는 여기서 create 면 서버가 재실행될 때마다 데이터 테이블을 다시 만든다 는 뜻이며 none 값을 주면 데이터 테이블을 다시 만들지 않습니다.

 

true로 하면 console에서 확인 가능

 

Show-sql:true로 설정하면 console창에 어떤 데이터가 들어가는지 보입니다.

 

데이터를 반환하는지 확인하기 위해

아래처럼 post맨으로 url로 요청을 보내 봅시다.

x-www-form-urlencoded로 key/value로 넣어보자.

 

x-www-form-urlencoded

 

데이터가 들어간 모습

 

DB에 데이터가 쏙! 담긴다.

 


 

 Tips

** jsp에서 rs는 커서가 가리키고 있는 데이터 주소를 가짐

Next() 다음 주소