본문 바로가기

전체 글54

[JPA] 엔티티 매핑 안녕하세요. 오늘은 엔티티와 테이블을 매핑하는 방법을 알아보겠습니다. 객체와 테이블 매핑 @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 붙여야 합니다. @Entity가 붙은 클래스는 JPA가 관리하고, 엔티티라고 부릅니다. 참고로 '엔티티'라는 단어는 @Entity가 붙어서 JPA가 관리하는 클래스를 의미하기도 하고, '엔티티 = 개체 = 레코드 = 행'으로 한 객체를 의미하기도 합니다[1][2]. 여기서는 전자의 JPA가 관리하는 클래스라는 의미로 사용하겠습니다. @Entity 적용 시 주의 사항은 아래와 같습니다. 1. 기본 생성자는 필수입니다. 파라미터가 없는 public 또는 protected 생성자가 필요합니다. 이유가 궁금해서 인프런의 질문 답변 게시판을 .. 2022. 2. 3.
[JPA] 영속성 컨텍스트의 특징과 장점 안녕하세요. 영속성 컨텍스트의 특징과 장점에 대해서 알아보겠습니다. 지난 게시글에서 JPA의 영속성 관리와 영속성 컨텍스트의 개념을 알아보았습니다. 궁금하신 분은 아래 게시글을 참고해주세요. HTML 삽입 미리보기할 수 없는 소스 영속성 컨텍스트는 '엔티티를 영구 저장하는 환경'이자 application과 DB 사이의 중간계층이며, 영속성 컨텍스트에 들어온 객체는 JPA에 의해 관리됨을 알아보았습니다. 영속성 컨텍스트의 특징을 더 알아보겠습니다. 영속성 컨텍스트의 특징 1. 영속성 컨텍스트와 식별자 값 영속성 컨텍스트는 엔티티를 식별자 값(@Id로 테이블의 기본 키와 매핑한 값)으로 구분합니다. 따라서 영속 상태의 객체는 반드시 식별자 값을 가져야 합니다. 예를 들어서 아래 코드를 수행해도 데이터가 DB.. 2022. 2. 3.
[JPA] 영속성 관리 안녕하세요. 오늘은 JPA의 영속성 관리에 대해서 알아보겠습니다. 지난 게시글에서 JPA로 CRUD 작업을 어떻게 하는지 알아보았습니다. 궁금하신 분은 아래 게시글을 참고해주세요. HTML 삽입 미리보기할 수 없는 소스 JPA의 수정은 신기하게 동작합니다. JPA에는 em.update()와 같은 기능이 없습니다. 자바 코드에서 객체의 필드 값을 수정하기만 하면 DB에 자동으로 변경된 데이터가 반영됩니다. 이것이 가능한 이유는 JPA의 영속성 관리 때문입니다. 영속은 영속성 컨텍스트에서 관리되는 상태를 의미합니다. 먼저 영속성 컨텍스트를 자세히 알아봅시다. 영속성 컨텍스트(Persistence Context) 영속성 컨텍스트는 JPA를 이해하는 데 가장 중요한 용어 중 하나입니다. 한국어로 번역하자면 엔티.. 2022. 2. 2.
JPA 기본 설정, JPA CRUD 기초 안녕하세요. 오늘은 JPA 기본 설정을 알아보고 JPA로 CRUD(등록, 조회, 수정, 삭제)를 해보겠습니다. JPA 기본 설정 JPA를 사용하기 위해서 두 개의 설정이 필요합니다. 1. 라이브러리 추가 - pom.xml 자바 프로젝트를 Maven으로 생성하면 pom.xml 파일이 생성됩니다. pom.xml 파일에 아래 코드를 추가합니다. 11 11 org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 1.4.200 javax.xml.bind jaxb-api 2.3.0 org.projectlombok lombok RELEASE compile dependencies의 윗부분까지는 기본 파일에 설정되어 있고, dependencies 부분을.. 2022. 2. 2.
자바 ORM 표준 JPA 프로그래밍 - 기본편 README 인프런 '자바 ORM 표준 JPA 프로그래밍 - 기본편' 강의를 듣고 공부하며 정리한 자료입니다. 지식 공유자 김영한님이 작성한 저서 도 참고하였습니다. 인프런 강의 URL: https://www.inflearn.com/course/ORM-JPA-Basic 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 2022. 2. 2.
HTTP 메시지 컨버터 어떻게 JSON 데이터를 HTTP 메시지 바디에서 읽거나 쓸 수 있을까요? 안녕하세요. 오늘은 어떻게 JSON 데이터를 HTTP 메시지 바디에서 읽거나 쓸 수 있는지 알아보겠습니다. @RequestBody로 HTTP 요청 메시지 바디의 JSON 데이터를 객체로 받을 수 있고, @ResponseBody로 객체를 HTTP 응답 메시지 바디에 데이터로 전송할 수 있습니다. 이것이 어떻게 가능할까요? 바로 HTTP 메시지 컨버터 덕분인데요. @ResponseBody의 사용 원리를 봅시다. 스프링은 @ResponseBody 어노테이션이 있으면 HttpMessageConverter를 호출합니다. HttpMessageConverter에는 JsonConverter, StringConverter 등이 있고 데이터에 따라.. 2022. 2. 2.
스프링 MVC - HTTP 응답 데이터 만들기 스프링 MVC에서 HTTP 응답 데이터는 어떻게 만들까요? 안녕하세요. 오늘은 스프링 MVC에서 HTTP 응답 데이터를 만드는 방법을 알아보겠습니다. 앞서 스프링 MVC를 도입하지 않고 서블릿의 HttpServletResponse 객체로 응답 메시지를 만드는 방법을 알아보았습니다. 궁금하신 분은 아래 게시글을 참고해주세요. HTML 삽입 미리보기할 수 없는 소스 서버에서 응답 데이터를 만드는 방법은 크게 3가지가 있습니다. 정적 리소스, 뷰 템플릿, HTTP 메시지입니다. 세 가지를 하나씩 알아봅시다. 정적 리소스 웹 브라우저에 정적인 HTML, css, js 파일을 제공하는 것입니다. source/main/resources/static 경로에 파일을 넣어두면 정적 리소스를 제공할 수 있습니다. 예를 들.. 2022. 2. 1.
스프링 MVC - HTTP 요청 메시지(헤더, 데이터) 조회 정리 스프링 MVC에서는 HTTP 요청 메시지를 어떻게 조회하나요? 안녕하세요. 오늘은 스프링 MVC로 HTTP 요청 메시지의 헤더와 데이터를 조회하는 방법을 알아보겠습니다. 앞서 스프링 MVC를 도입하지 않고 서블릿의 HttpServletRequest로 요청 메시지를 조회하는 방법을 알아보았습니다. 궁금하신 분은 아래 게시글을 참고해주세요. HTML 삽입 미리보기할 수 없는 소스 어노테이션 기반의 스프링 MVC는 더욱 편리한 요청 메시지 조회 기능을 제공합니다. 먼저 헤더를 어떻게 조회하는지 알아봅시다. 헤더 조회 헤더를 조회하는 코드를 봅시다. @Slf4j @RestController public class RequestHeaderController { @RequestMapping("/headers") p.. 2022. 1. 31.