https://velog.io/@blackb0x/%EC%84%9C%EB%B2%84-API-%ED%86%B5%EC%8B%A0%EA%B3%BC-REST-API

 

 

서버 API 통신과 REST API

Application Programming Interface의 약자API는 한 프로그램이 다른 프로그램을 이용할 때 쓰는 인터페이스로 입출력이 데이터로 된다.어떤 특정 사이트에서 특정 데이터를 공유할 경우 어떤 방식으로 요

velog.io

기본 API 와 통신에 대해서는 위참조

[간단 요약]

서버 API(Application Programming Interface)

 REST(Representational State Transfer) API - HTTP 통신에서 어떤 자원에 대한 CRUD(Create, Read, Update, Delete) 요청을 Resource와 Method(GET, POS, DELETE등)로 표현하여 특정한 형태로 전달하는 방식

 

만들어 보기전에 기본 API 통신 이해

https://korshika.tistory.com/49

 

HTTP 통신 기본 & Rest API

■ 웹 & 통신 protocol 1) 정의 : 인터넷 상에서 통신 규약, protocol 이라고 지칭 > 웹서버와 웹 사용자의 브라우저 사이에 Hyper Text문서를 전송하기 위한 규약 (문자 그대로 text 전송) + encrypted(암호화)..

korshika.tistory.com

 

 

[HttpURLConnection  참고 아래]

https://ggoreb.tistory.com/114

 

[Java] URLConnection, URLEncoder, URLDecoder

java.net.URLConnection - URL 내용을 읽어오거나, URL 주소에 GET / POST로 데이터를 전달 할 때 사용함 - 웹 페이지나 서블릿에 데이터를 전달 수 있음 - URL --> openConnection() --> URLConnection --> getIn..

ggoreb.tistory.com

 

본격적으로 만들어 봅니다.

 

// API 설계도

public class ApiConnect {
// HTTP URL 연결
private HttpURLConnection http;

public ApiConnect(HttpURLConnection http) {
super();
this.http = http;
}

// api 요청할 메소드( get,post,put 등과 json 인자)
public void request(String method, JsonObject jsonData) throws IOException{

// 스트림 출력설정
http.setDoOutput(true);

// 메소드 설정
http.setRequestMethod(method);

//
http.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
http.setRequestProperty("Transfer-Encoding", "chunked");

// 연결지속
http.setRequestProperty("Connection", "keep-alive");

// 케넥션 타임아웃 10초
http.setConnectTimeout(10000);

// 컨텐츠 조회 타임아웃 10초
http.setReadTimeout(10000);

// json 싫어서 보냄
PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(http.getOutputStream()));
printWriter.write(jsonData.toString());
printWriter.flush();

}

// api 응답 response 메소드
public String response() throws IOException{

// BufferedReader 클래스 사용
BufferedReader bufferedReader = null;

// http 응답코드 받음
int status = http.getResponseCode();

// 200 으로 정상이면
if(status == HttpURLConnection.HTTP_OK) {

//  InputStreamReader 클래스안에 http 통신 값의 getInputStream 을 담음
bufferedReader = new BufferedReader(new InputStreamReader(http.getInputStream()));
}else {
bufferedReader = new BufferedReader(new InputStreamReader(http.getErrorStream()));
}
String line;
StringBuffer response = new StringBuffer();

// StringBuffer 클래스에 bufferedReader 클래스 내용 담음
while((line = bufferedReader.readLine()) != null ) {
response.append(line);
}
bufferedReader.close();

// 스트링 반환
return response.toString();

}


}

LIST

JPA 특징

  1. 데이터를 객체지향적으로 관리할 수 있기 때문에 개발자는 비즈니스 로직에 집중할 수 있고 객체지향 개발이 가능하다.
  2. 자바 객체와 DB 테이블 사이의 매핑 설정을 통해 SQL을 생성한다.
  3. 객체를 통해 쿼리를 작성할 수 있는 JPQL(Java Persistence Query Language)를 지원
  4. JPA는 성능 향상을 위해 지연 로딩이나 즉시 로딩과 같은 몇가지 기법을 제공하는데 이것을 잘 활용하면 SQL을 직접 사용하는 것과 유사한 성능을 얻을 수 있다.

JPA를 왜 사용해야 할까

  1. sql 중심적인 개발에서 객체 중심적인 개발이 가능하다.
    sql 코드의 반복, 객체지향과 관계지향 데이터베이스의 페러다임 불일치
    Object -> [SQL 변환] -> RDB에 저장
    [개발자 == SQL 매퍼] 라고 할만큼 SQL 작업을 너무 많이 하고 있다.
  2. 생산성이 증가
    간단한 메소드로 CRUD가 가능하다
  3. 유지보수가 쉽다
    기존: 필드 변경 시 모든 SQL을 수정해야 한다.
    JPA: 필드만 추가하면 된다. SQL은 JPA가 처리하기 때문에 손댈 것이 없다.
  4. Object와 RDB 간의 패러다임 불일치 해결

 

JPA 하이버네이트

하이버네이트는 JPA 구현체의 한 종류이다.

JPA는 DB와 자바 객체를 매핑하기 위한 인터페이스(API)를 제공하고 JPA 구현체(하이버네이트)는 이 인터페이스를 구현한 것이다.

하이버네이트 외에도 EclipseLink, DataNucleus, OpenJPA, TopLink Essentials 등이 있다.

LIST

+ Recent posts