본문 바로가기

웹 개발13

[JPA] JPA는 왜 사용하나요? JPA란 무엇인가 JPA(Java Persistence API)는 javax.persistence 패키지에 정의되어 있는 자바 진영의 ORM 기술 표준이다. ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스를 매팡한다는 것인데, 쉽게 말하면 객체를 데이터베이스에 저장할 때 마치 자바 컬렉션에 저장하듯이 SQL문을 직접 작성하지 않고도 프로그래밍할 수 있도록 도와주는 기술이다. JPA는 자바 ORM 기술에 대한 API 표준 명세, 즉 인터페이스의 집합이다. 따라서 JPA를 사용하려면 JPA를 구현한 ORM 프레임워크를 사용해야한다. 대표적으로 하이버네이트, EclipseLink, DataNucleus 등이 있다. 출처: 자바 ORM 표준 JPA 프로그래밍 왜 JPA를 사용.. 2021. 7. 13.
[SpringMVC] 스프링 MVC의 구조를 이해해보자 (2/3) V2: JSP 포워드 중복 제거 이전 포스팅에서 단순히 프론트 컨트롤러만 도입한 V1 을 만들어봤다. 이때는 단순히 프론트 컨트롤러를 도입하는 것에 의의를 두고 딱히 설계상 진보된 점은 없었다. 이번에는 V1에서 조금 더 진보된 형태인 V2를 만들어본다. 이번에는 V1에 화면을 그리는 책임을 가지는 오브젝트인 View를 도입해서 JSP를 포워드하는 코드의 중복을 없애보도록 하겠다. 아래의 코드 말이다. RequestDispatcher requestDispatcher = request.getRequestDispatcher(viewPath); requestDispatcher.forward(request, response); V2의 구조는 아래와 같다 이번에는 Controller가 View를 반환하는데, Co.. 2021. 7. 9.
[SpringMVC] 스프링 MVC의 구조를 이해해보자 (1/3) 애너테이션 기반의 스프링 MVC는 정말 편리하다. 얼마나 편리하나면 그 구조를 모르고 사용할때는 마치 마법처럼 느껴질 정도이다… 나는 그냥 문자열만 반환했는데 어떻게 뷰를 찾는건지, 나는 그냥 객체를 반환했는데 어떻게 Json으로 변환해서 HTTP 메시지 바디에 값을 입력하는지… 또 어떻게 컨트롤러의 파라미터에 맞춰서 필요한 컨트롤러를 동작시키는지… 이 과정이 어떻게 일어나는지 정확히 알려면 RequestMappingHandlerAdapter와 HttpMessageConverter, ArgumentResolver의 동작 방식과 구조를 알아야한다. 김영한님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 강의를 들으면서 스프링이 어떤 구조로 이런 다양한 변화에 맞게 컨트롤러를 호출하고 뷰를 반환하는지 .. 2021. 7. 9.
[토비의스프링] Ch.1-(2) 스프링 IoC, 싱글톤, DI 본 포스팅은 을 읽고 공부하면서 이해한 내용을 정리한 것입니다. 정확하고 자세한 내용은 반드시 원문 서적에서 확인바랍니다. 스프링의 IoC 이전 포스팅에서 코드를 리팩토링하면서 IoC를 적용하는 과정을 살펴봤다. 이렇게 그냥 IoC를 적용하는 것과 스프링을 이용하는 것에는 어떤 차이가 있을까? 스프링을 사용하면 아주 편리하게 IoC를 적용할 수 있음은 물론이고 스프링 컨테이너가 제공하는 여러 기능적 이점을 얻을 수 있다. 우선 기존의 코드에 스프링을 적용해보자. 스프링 적용 스프링에서는 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트를 Bean이라고 부른다. 빈의 생성과 관계설정 같은 제어를 담당하는 IoC 오브젝트를 Bean Factory라고 부른다. 보통 빈 팩토리보다는 이를 좀 더 확.. 2021. 7. 8.
[토비의 스프링] Ch.1-(1) 관심사 분리, 제어의 역전 본 포스팅은 을 읽고 공부하면서 이해한 내용을 정리한 것입니다. 정확하고 자세한 내용은 반드시 원문 서적에서 확인바랍니다. 관심사 분리 회원 정보를 관리하는 DAO를 만든다고 해보자. DAO(Data Access Object): DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 일컫는다. 자바빈(JavaBean): 원래 비주얼 툴에서 조작 가능한 컴포넌트를 지칭하는 용어였으나 지금은 다음의 두 관례를 따르는 오브젝트를 가리킨다. 디폴트 생성자를 갖는다. 툴이나 프레임워크에서 리플렉션을 이용해 오브젝트를 생성하는데 필요하기 때문. 프로퍼티를 갖는다. 자바빈이 노출하는 이름을 가진 속성을 프로퍼티라 한다. > 흔히 말하는 게터세터(Getter & Setter) 유저의 데이터를 DB.. 2021. 3. 15.
[IntelliJ] 인텔리제이(얼티밋)에서 JSP/Servlet 개발환경 설정하는 법 서블릿 공부를 하려는데 인강에서는 이클립스를 사용해서 개발환경 설정에 애를 먹어 포스팅으로 정리해볼까 합니다. 우선 제 환경은 MacOS, IntelliJ Ultimate 2020.3 버전입니다. 저는 처음부터 얼티밋 버전을 써서 커뮤니티 버전에서도 이게 되는지는 잘 모르겠네요(아마 안될 겁니다). 학교 다니시는 분들은 학교 계정으로 얼티밋 버전을 1년 간 무료로 사용할 수 있으니 참고 부탁드립니다. 우선 새 프로젝트를 만듭니다. 자바 엔터프라이즈를 선택하고 애플리케이션 서버를 선택해줍니다. 저는 톰캣을 미리 깔아놨어서 이게 기본적으로 깔려있는건지 아닌지는 잘 모르겠습니다. 없으면 homebrew로 톰캣 설치하고 진행해주시면 될 것 같습니다. 참고로 homebrew로 설치했을 때 홈 디렉토리 경로는 /u.. 2021. 2. 16.