JPAL JPQL은 JPA에서 사용할 수 있는 쿼리이다. JPQL문법은 SQL과 매우 비슷하며 DB쿼리에 익숙하다면 어렵지 않게 사용 가능하다. SLQ과의 차이점은 테이블이나 칼럼의 이름대신 엔티티 객체를 대상으로 수행하는 쿼리익 때문에 매핑된 엔티티 이름과 필드 이름을 사용한다. 쿼리 메서드 쿼리 메서드는 크게 동작을 결정하는 주제(Subject)와 서술어(Predicate)로 구분된다. 'find...By', 'exist...By'와 같은 키워드로 쿼리의 주제를 정하고 'By'는 서술어의 시작을 나타내는 구분자 역할이다. 서술어 부분은 검색 및 정렬 조건을 지정하는 영역이다. ex) (리턴타입) + {주제 + 서술어(속성)} 구조의 메서드 List findByLastnameAndEmail(String..
전체 글
ORM ORM은 Object Relational Mapping의 줄임말로 객체 관계 매핑을 의미한다. 자바와 같은 객체지향 언어에서 의미하는 객체와 RDB의 테이블을 자동으로 매핑하는 방법입니다. 클래스는 데이터베이스의 테이블과 매핑하기 위해 만들어진 것이 아니기 때문에 RDB 테이블과 어쩔 수 없는 불일치가 존재하는데 ORM은 이 둘의 불일치와 제약사항을 해결하는 역할이다. ORM의 장점 1. 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다. 쿼리문을 작성하는 양이 현저히 줄어 개발 비용이 줄어든다 객체지향적으로 DB에 접근할 수 있어 코드의 가독성이 높아진다 2. 재사용 및 유지보수가 편리하다 ORM을 통해 매핑된 객체는 모두 독립적으로 작성되어 있어 재사용이 용이하다 객체들은 각 클래스로 나뉘어 ..
GET API GET API는 웹 애플리케이션 서버에서 값을 가져올 때 사용하는 API이다. @RestController @RequestMapping @RestController @RequestMapping("/api/v1/get-api") public class GetController { } @RestController는 @Controller에 @ResponseBody가 결합된 어노테이션이다. RestController를 붙이면 컨트롤러 클래스 하위 메서드에 @ResponseBody를 붙이지 않아도 문자열과 JSON등을 전송할 수 있다. 클래스 수준에서 @RequestMapping를 설정하면 내부에 선언한 메서드의 URL 리소스 앞에 @RequestMapping의 값이 공통으로 추가된다.(localh..
서버 간 통신 사용자가 블로그 기능을 사용하기 위해 로그인 서비스를 거쳐야만 하는 상황이 있는데 이 상황에서의 통신을 '서버 간 통신'이라고 한다. 서버 간 통신은 한 서버가 다른 서버에 통신을 요청하는 것을 의미하며, 한 대는 서버, 다른 한 대는 클라이언트가 되는 구조이다. 다양한 통신 방식이 적용 가능 하지만 가장 많이 사용하는 통신 방식은 HTTP/HTTPS 방식이다. 스프링 부트의 동작 방식 스프링 부트에서 spring-boot-starter-web 모듈을 사용하면 기본적으로 톰캣을 사용하는 스프링 MVC구조를 기반으로 동작한다. 서블릿은 서블릿 컨테이너에서 관리하고 서블릿 컨테이너는 서블릿 인스턴스를 생성하고 관리하는 역할을 수행하는 주체로서 톰캣은 WAS의 역할과 서블릿 컨테이너의 역할을 수..
제어 역전(IoC; Inversion of Control) 일반적인 자바 개발은 사용하려는 객체를 선언하고 해당 객체의 의존성을 생성한 후 객체에서 제공하는 기능을 사용한다. 객체를 생성하고 사용하는 일련의 작업을 개발자가 직접 제어하는 구조이다. 하지만 제어 역전을 적용한 스프링의 경우 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 외부에 위임한다. (제어 역전이란 객체의 관리를 컨테이너에 맡겨 제어권이 넘어간 것) 여기서 외부는 스프링 컨테이너 또는 IoC컨테이너를 의미하고 제어 역전을 통해 의존성 주입, 관점지향 프로그래밍등이 가능해진다. 스프링을 사용하면 객체의 제어권을 컨테이너로 넘기기 때문에 비지니스 로직을 작성하는 것에 더 집중할 수 있다. 의존성 주입 의존성 주입이란 제어 역전의..