개요 SQL을 직접 다룰 때 발생하는 문제, 이를 해결해주는 JPA의 기능에 대해 알아보자 SQL을 직접 다룰 때 발생하는 문제 비슷한 코드의 반복 작업 JDBC API를 사용하여 하나의 회원 조회 기능을 만든다고 가정할 때 회원 조회 SQL 작성 JDBC API를 사용하여 SQL 실행 데이터를 회원 객체와 매핑 이러한 작업을 매 SQL 요청마다 반복해야 한다. SQL에 의존적인 개발 회원 테이블에 이메일 필드를 추가할 경우에 변경해야 하는 코드 등록 코드 조회 코드 수정 코드 개발자가 직접 일일히 수정해야 한다. 엔티티 신뢰의 어려움 엔티티는 비즈니스 요구사항을 모델링한 객체이다. Member 엔티티가 Team 엔티티를 참조하고 있고 Member에서 Team 값을 조회하는 비즈니스 로직이 있을 때 DA..
HTTP 서버와의 통신방법 URLConnection jdk 1.2 부터 내장되어 있으며, java.net 패키지에 있다. URL의 내용을 읽어오거나, URL 주소에 GET, POST로 데이터를 전달 할 때 사용한다. 또한 http 프로토콜 이외에도 가능하다.(file 등) 주요 메소드 new URL("http:// ....") openConnection() URLConnection getInputStream, getOutputStream InputStream, OutputStream 처리 1. 응답코드가 4xx, 5xx 이면 IOException이 터진다 2. 타임아웃을 설정할 수 없다 3. 쿠키 제어가 불가하다 HttpClient 4.x부터는 Apache HttpComponents 로 불린다. mave..
사용자 계정 추가를 하게되면 디폴트 root 사용자인 ubuntu가 아니라 지정한 계정으로 ssh 접속이 가능하다 → ssh -i "keyName" new-user@ec2-1111-11111... 가 가능해짐 Instance 사용자 계정 추가 ← AWS 사이트 참고 알아둬야 할 command commanddescription 1 sudo /etc/sudoers sudo 권한을 가지고 있는 계정들이 적혀있는 파일 특정 계정에 sudo 권한을 부여해주고 싶다면 해당 파일을 수정해야 함 2 sudo vim /etc/ssh/sshd_config에서 authentication yes로 변경 pem 키 없이 password만 치고 들어가기 위해 해당 파일을 수정해줘야 함 3 sudo systemctl restart..
GraphQL 이란 ? 페이스북에서 개발하여 발표한 "API를 위한 쿼리 언어" → GraphQL은 API에 있는 데이터에 대해서 이해하기 쉬운 설명을 제공하고 클라이언트에게 필요한 것을 정확하게 요청할 수 있는 기능을 제공한다 핵심 : 클라이언트가 직접 어떤데이터가 필요한지 명시할 수 있도록 한다 탄생 배경 (REST API 와 비교) OverFetching 기존의 REST API를 사용할 경우 클라이언트는 불필요한 정보를 전달받는 문제점이 있었다. 가령 MemberList 중 id 만을 필요로 한다면 API를 새로 생성하거나 List를 받은 후 2차 가공을 해야하는 불필요한 작업 시간이 낭비되었다. graphQL은 클라이언트 측에서 받고싶은 데이터만을 정의하므로 이러한 OverFetching 문제를 ..
둘의 공통점 - 이 둘은 무슨 행동을 하기전에 먼저 실행하거나, 실행 후에 추가적인 행동을 할 때 사용된다. - 공통업무를 프로그램 흐름의 앞, 중간, 뒤에 추가하여 자동으로 처리할 수 있는 방법을 제시한다. - 서블릿 단위에서 실행된다 그렇다면 왜 이 두개가 따로 존재하는지에 대한 차이점과 언제의 상황에 사용되는지에 대해 알아보자 1. Filter (필터) 위의 그림에서 알 수 있듯 Dispatcher Servlet 이전에 실행된다. 필터가 동작하도록 지정된 자원의 앞단에서 요청내용을 변경하거나, 여러가지 체크를 수행할 수 있다 자원의 처리가 끝난 후 응답내용에 대해서도 변경하는 처리를 할 수 있다. 사용 예시 서블릿 필터의 경우 Web.xml에 등록하고 인코딩 변환처리, XSS방어 등의 요청에 대한 ..
1. OOP란? 상태와 행위를 가진 객체로 구성되어있고 이러한 객체들의 연관관계를 표현한 프로그램을 뜻한다 2. 장점 - 코드의 재사용성이 높다 : 누군가가 만든 클래스를 가져와 상속을 통해 확장이 가능 - 유지보수가 쉽다 : 수정해야할 부분이 클래스 내부에 멤버 변수 혹은 메소드로 존재하기 때문에 해당 부분만 수정하면 됨 - 대형 프로젝트에 적합하다 : 클래스 단위로 모듈화시켜 개발할 수 있으므로 업무 분담이 쉬움 3. 단점 - 처리 속도가 상대적으로 느리다 - 객체가 많아지면 용량이 커질 수 밖에 없다 - 설계시 많은 노력과 시간이 필요하다 3. 객체 지향 프로그래밍의 특징 - 추상화 : 불필요한 정보는 숨기고 필요한 정보만을 표현함으로써 공통의 속성이나 기능을 묶어 이름을 붙이는 것 - 캡슐화 : ..
1. DispatcherServlet : 애플리케이션으로 들어오는 모든 Reqest를 받는 서블릿 구현체, 주로 웹 서버의 HttpServlet을 상속받아 구현된다. 2. HadlerMapping : DispatcherServlet은 Request url에 따라 어떤 Controller로 처리해야하는지 Controller를 찾아주는 역할 3. HandlerAdapter : HandlerMapping에게서 얻은 정보로 HandlerAdapter 객체를 가져온와 객체의 메소드를 실행한다. 즉 컨트롤러 실행 4. Controller : Reqeust를 처리 후 그 결과를 뷰에 전달할 데이터를 Model 객체에 저장하여 DispatcherServlet에게 View name을 리턴한다. 5. ModelAndVie..
1. 서블릿 탄생 배경 : 예전에 웹 프로그램은 html과 image 등의 정적인 데이터만을 주고 받을 수 있었다. 시간이 지남에 따라 사용자의 요구에 따라 동적 데이터도 주고 받을 수 있어야 했는데 이때 탄생된 것이 CGI 이다. CGI란? : Common Gatewat Interface의 약자로 http 통신 규약을 사용하는 웹서버가 웹애플리케이션과 데이터를 주고받은 처리 규약, 인터페이스므로 여러 언어로 구현이 가능했다. 클라이언트는 웹 서버에게 요청을 보내고 웹 서버는 웹 애플리케이션에게 요청을 전달한다. 웹 애플리케이션에서는 CGI를 구현한 구현체로 동적인 데이터를 처리하여 response하게된다. 단점 모든 요청은 하나의 프로세스로 이루어진다. 이렇게 되면 많은 메모리 소모가 일어나게 된다. ..