Dev (61) 썸네일형 리스트형 RS) JPA(Java Persistence API) 자바 진영의 ORM 기술 표준 JPA를 구현하는 대표적인 구현체 하이버네이트, EclipseLink, DataNucleus -> 하이버네이트가 대표적이므로 구현체로 하이버네이트를 쓴다고 생각하자! ORM(Object-relational mapping 객체 관계 매핑) 객체는 객체대로 설계 관계형 데이터베이스는 관계형 데이터베이스대로 설계 중간에서 ORM 프레임워크가 매핑 작업 개발자가 직접 JDBC를 사용하는 것이 아니라 JPA가 중간에서 이 역할을 대신한다. JPA 저장 동작 MemberDAO에서 데이터를 저장할 경우 JPA에게 Member 객체를 넘긴다. JPA가 Member 객체를 분석해서 적절한 INSERT쿼리를 생성 JPA가 JDBC API를 사용하여 DB에 보내고 결과(ResultSet)를 받.. RS) SQL 중심적인 개발의 문제점 데이터베이스의 세계는 현재 아직 RDB(관계형 디비)가 잡고 있다. 즉 객체를 관계형 디비에 저장해서 관리한다. 문제점은 관계형 디비에 저장하다보니 SQL이 중요한 비중을 차지한다. 수정의 경우에도 SQL 수정을 위주로 해야하며, 모든 SQL을 짜야한다. ex) memberId와 name을 통해 쿼리문을 다 짜여진 상태로 개발이 완료가 되었으나, 이후에 전화번호(tel)를 추가해달라는 요청으로 컬럼도 추가해야하고 본질적인 쿼리문에도 수정작업이 들어가야한다. 이로인해 SQL에 의존적인 개발을 피하기 어렵다는 점이 큰 문제로 작용한다. 패러다임의 불일치 문제 (객체 vs 관계형 데이터베이스) 객체지향이 나온 사상과 관계형 데이터베이스가 나온 사상 자체가 다르다. 관계형 데이터베이스는 데이터를 정규화해서 보관.. yum을 이용한 java 설치 yum을 통해서는 자바11버전을 설치할 수 없다. 아래와 같이 1.7과 1.8버전에 대해서만 지원을 하기 때문에 11버전을 설치하기 위해서는 다른방법을 사용해야 한다. 찾아보니 Amazon에서 제공하는 OpenJDK인 Amazon Coretto를 다운받아 간편하게 11버전을 설치가 가능하다. 설치 방법 및 명령어는 아래를 참조하자 # aws coreetto 다운로드 sudo curl -L https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.rpm -o jdk11.rpm # jdk11 설치 sudo yum localinstall jdk11.rpm # jdk version 선택 sudo /usr/sbin/alternatives --c.. AWS EC2 apt 관련 AWS 관련하여 공부하면서 내용을 정리하고 있는 중이다. AWS를 사용해보지 않아서 모든게 새롭다.. 처음부터 위와같은 에러와 마주쳤다. 자바를 설치하는 과정에서 apt라는 소프트웨어 관리 명령어를 사용하는데.. 저 명령어를 찾을 수 없다는 에러다. 에러를 찾아 확인해보니.. EC2 Amazon Linux 2 AMI 는 apt-get 패키지가 아닌 yum 패키지를 사용해야한다는 원인을 찾았고 yum 명령어를 통해 update를 확인해보니 정상적으로 작동하는 것을 확인하였다. 이제 자바설치를 마저 진행하자! 참조 (https://somjang.tistory.com/entry/AWS-Amazon-Linux-2-AMI-%EC%97%90%EC%84%9C-apt-get-%EC%9D%B4-%EC%8B%A4%ED%9.. HTTP 메서드 속성 안전(Safe Methods) 멱등(Idempotent Methods) 캐시가능(Cacheable Methods) 안전(Safe) 호출해도 리소스를 변경하지 않는다. GET, HEAD 같은 경우는 호출해도 변경이 일어나지 않기 때문에 안전하다. 그외에 무언가를 바꾸는 것들은 안전하지 않다. 안전의 부가적인 의심 계속 호출하여 로그 같은게 쌓여서 장애가 발생하는 경우도 안전한가? GET을 하던 도중 다른 사용자가 PUT으로 리소스를 변경해 버려도 상관 없을까? 멱등은 외부 요인으로 중간에 리소스가 변경되는 것 까지는 고려하지 않는다! 멱등(Idempotent) f(f(x)) = f(x) 한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같은 경우를 말한다 멱등 메서드 GET : 한번 조회하든, 두.. HTTP 메서드 종류 PUT, PATCH 그리고 DELETE 지난 번에 이어서 나머지 메서드도 알아보자! PUT 리소스를 대체한다. (파일의 복사랑 유사) (출처) 기존에 파일이 없으면 새로 넣어주고, 똑같은 파일이 있다면 덮어 쓴다. 리소스가 있으면 대체 리소스가 없으면 생성 쉽게 이야기해서 덮어버린다. 즉, 완전히 대체해버린다. 중요! 클라이언트가 리소스를 식별 클라이언트가 리소스 위치를 알고 URI 지정 POST와의 차이점을 알아두자 아래 그림을 보면 PUT /members/100 HTTP/1.1 → 클라이언트가 구체적인 리소스 전체 경로를 알고있고 URI를 지정한다! → 이 점이 POST와의 차이점이다. → PUT 같은 경우는 클라이언트가 리소스를 식별한다. PUT 리소스가 있는 경우 (출처) username : old로 age를 50이라는 메시지를 담아서.. HTTP 메서드 종류 GET과 POST 주요메서드 리소스 = 리프리젠테이션 GET : 리소스 조회 POST : 요청 데이터 처리, 주로 등록에 사용 PUT : 리소스를 대체, 해당 리소스가 없으면 생성 PATCH : 리소스 부분 변경 DELETE : 리소스 삭제 기타 메서드 HEAD : GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환 OPTIONS : 대상 리소스에 대한 통신 기능 옵션(메서드)를 설명(주로 CORS에서 사용) CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정 TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행 GET 리소스 조회 서버에 전달하고 싶은 데이터는 query(쿼리 파라미터, 쿼리 스트링)을 통해서 전달 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 지.. HTTP 메서드 = HTTP API HTTP API를 만들기위해 예시로 만들어보자 회원 목록 API를 설계한다고 가정했을 떄 아래와 같은 경우는 올바른 API 설계일까?? (Before) 회원 목록 조회 /read-member-list 회원 조회 /read-member-by-id 회원 등록 /create-member 회원 수정 /update-member 회원 삭제 /delete-member API URI 설계하는데 있어서 가장 중요한 것은 리소스 식별이다! API URI의 고민 리소스의 의미란? 회원을 등록하고 수정하고 조회하는게 리소스가 아니다. ex) 메니랄을 캐라가 리소스가 아니고 미네랄 자체가 리소스다. 위에서는 회원이라는 개념 자체가 바로 리소스 이다. 리소스를 식별하는 방법은 회원을 등록하고 수정 조회하는 것들은 배제하고 회원이.. 이전 1 2 3 4 5 6 ··· 8 다음