분류 전체보기 51

다양한 연관관계 매핑

연관관계 매핑 시 고려사항 3가지 다중성 다대일 : @ManyToOne 일대다 : @OneToMany 일대일 : @OneToOne 다대다 : @ManyToMany 단방향, 양방향 테이블 : 외래 키 하나로 양쪽 조인 가능, 사실 방향이라는 개념이 없음 객체 : 참조용 필드가 있는 쪽으로만 참조 가능, 한쪽만 참조하면 단방향, 양쪽이 서로 참조하면 양방향 연관관계의 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 객체 양방향 관계는 A ->, B->A 처럼 참조가 2군데 객체 양방향 관계는 참조가 2군데 있음. 둘중 테이블의 외래 키를 관리할 곳을 지정해야함 연관관계의 주인 : 외래 키를 관리하는 참조 주인의 반대편 : 외래키에 영향을 주지 않음, 단순 조회만 가능 다대일(N:1) 다대일 단방향..

개발/JPA 2022.06.06

연관관계 매핑 기초

▣ 목표 객체와 테이블 연관관계의 차이를 이해 객체의 참조와 테이블의 외래 키를 매핑 용어이해 방향 : 단방향, 양방향 다중성 : N:1, 1:N, 1:1, N:M 연관관계의 주인 : 객체 양방향 연관관계는 관계 관리 주인이 필요 연관관계가 필요한 이유 객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다. - 조영호(객체지향의 사실과 오해) 객체를 테이블에 맞추어 모델링 1. 연관관계가 없는 객체 코드(참조 대신에 외래 키를 그래로 사용) package study.datajpa.dto; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import..

개발/JPA 2022.06.05

엔티티 매핑

객체와 테이블 매핑 데이터베이스 스키마 자동 생성 필드와 컬럼 매핑 기본 키 매핑 실전 예제 - 요구사항 분석과 기본 매핑 객체와 테이블 매핑 @Entity 1. @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. 2. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수 이다. 3. 주의 사항 - 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) - final클래스, enum, interface, inner 클래스 사용X 4. 속성 정리 속성 : name JPA에서 사용할 엔티티 이름을 지정합니다. 기본값: 클래스 이름을 그대로 사용 합니다.(예: Member) 같은 클래스 이름이 없으면 가급적 기본값을 사용 합니다. @Table 1. 엔티티와 매핑할 ..

개발/JPA 2022.06.03

영속성 관리

JPA 내부 구조 JPA에서 가장 중요한 2가지 중 영속성 컨텍스트에 대해 알아보도록 리뷰 하도록 하겠습니다. 엔티티 매니저 팩토리와 엔티티 매니저 웹 어플리케이션 구동 시 EntityManagerFactory를 생성하여 가지고 있으며, 사용자의 요청 시 EntityManagerFactory가 사용자 각각의 요청에 따라 EntityManager를 각각 생성하여 ConnectionPool을 사용해서 DB를 핸들링 합니다. 영속성 컨텍스트란? 엔티티를 영구 저장하는 환경 EntityManager.persist(entity); 영속성 컨텍스트는 논리적인 개념 눈에 보이지 않음 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 엔티티의 생명 주기 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 ..

개발/JPA 2022.06.02

23. 스프링 프레임워크 - REST API[자바 웹을 다루는 기술]

REST 란? 네트워크에 대해 조금 알고 있다면 REST에 대해 이해하기 수월 할 수 있습니다. REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미 합니다. REST API라는 것은 REST 방싱으로 제공되는 API를 말합니다. 1. HTTP URI를 통해 자원을 명시 2. HTTP 의 POST, GET, PUT, DELETE 메서드를 이용 3. 해당 자원에 대한 CRUD를 적용 CRUD는 기본적인 데이터 처리 기능을 말합니다. 1. CREATE - POST(데이터 생성) 2. Read - 데이터 조회(GET) 3. Update - 데이터 수정(PUT) 4. Delete - 데이터 삭제(DELETE) REST..

개발/스프링 2022.06.02

JPA소개 및 시작

JPA와 모던 자바데이터 저장 기술 현 문제점?? - 객체지향 언어인 JAVA의 객체를 관계형 데이터베이스를 통해 관리 - SQL 중심의 개발 - SQL 중심의 개발이기 개발자가 객체 지향의 구조를 만들었어도 결국 SQL로 데이터를 관리 (개발자가 직접 SQL을 작성 및 수정) 1. 객체 CRUD public class Member{ private String memberId; private String name; } Insert INTO MEMBER(MEMBER_ID, NAME) VALUES SELECT MEMBER_ID, NAME FROM MEMBER M UPDATE MEMBER SET ... 전화번호를 추가해야하는 요청이 있을 때... 하나 전화번호와 관련된 모든 SQL문을 수정 public cla..

개발/JPA 2022.05.31

22. 스프링 프레임워크 - 인터셉터[자바 웹을 다루는 기술]

인터셉터(Interceptor)란? 인터셉터는 중간에서 가로챈다는 뜻입니다. 사전적 의미를 생각하며 스프링 인터셉터의 기능을 생각해 보자면 Client(브라우저)의 Request를 Controller에서 받아 실행 하기 전에 중간에서 가로채는 역할을 하고 Controller 실행 후 DispacherServlet이 View로 보내기 전에 가로채는 역할을 합니다. 스프링 HandlerInterceptor 클래스의 메서드 메서드 기능 preHandle() 컨트롤러 실행 전 호출 됩니다. postHandle() 컨트롤러 실행 후 DispathcerServlet이 뷰로 보내기 전에 호출 됩니다. afterCompletion() 뷰까지 수행하고 나서 호출 됩니다. servlet-context.xml .........

개발/스프링 2022.05.30

21. 스프링 프레임 워크 - 썸네일 이미지[자바 웹을 다루는 기술]

쇼핑몰 등 에서 이미지를 나타날 때 썸네일 이미지를 사용하는 경우가 있습니다. 이미지의 개수가 많아 원본이지의 경우는 표시할 경우 오랜 시간이 걸릴 수 있습니다. 그래서 썸네일을 이용해서 목록에 축소된 이미지를 등록하여 신속하게 나타 낼 수 있습니다. pom.xml net.coobird thumbnailator 0.4.8 썸네일 라이브러리를 추가 FileDownController.java package com.myspring.pro28.ex02; .......... @Controller public class FileDownloadController { //파일 저장 위치를 지정 private static String CURR_IMAGE_REPO_PATH = "c:\\spring\\image_repo";..

개발/스프링 2022.05.30

20. 스프링 프레임워크 - 다중 파일 업로드 기능[자바 웹을 다루는 기술]

파일 첨부 기능에 대해 알아보록 하겠습니다. 웹이나 메일에서 이미지, 파일 등등을 첨부하는 경우가 있습니다. 근데 한 개만 첨부하는 것이 아니라 한 개 이상의 여러개를 첨부하는 상황이 있습니다. 그래서 오늘은 다중 파일을 업로드 하는 기능을 구현하도록 하겠습니다. 스프링의 CommonsMultipartResolver 클래스를 이용하면 다중 파일 업로드가 가능합니다. CommonsMultipartResolver 클래스 속성 속성 설명 maxUploadSize 최대로 업로드가 가능한 파일의 크기를 설정합니다. maxInMemorySize 디스크에 임시 파일을 생성하기 전 메모리에 보관할 수 있는 최대 바이트 크기를 설정합니다. defaultEncoding 전달되는 매개변수의 인코딩을 설정합니다. pom.xm..

개발/스프링 2022.05.30

19. 스프링 프레임워크 - 타일즈[자바웹을 다루는 기술]

스프링 타일즈라는 기능은 우리가 웹 페이지에서 공통적으로 적용되는 상단, 하단, 사이드 jsp를 레이아웃 템플릿에 적용하여 재사용하게 편하게 해주는 기능 입니다. 필자는 이전에 jsp:include 를 통해서 .jsp 페이지 마다 적용하긴 했었는데, 이 기능을 알고 시간 낭비했다고 생각 했습니다. 타일즈의 장정은 페이지 레이아웃을 쉽게 구현 할 수 있고 공통된 레이아웃읗 사용하여 유지관리를 쉽게 할 수 있습니다. 간단한 실습을 하도록 하겠습니다. pom.xml org.apache.tiles tiles-core 2.2.2 org.apache.tiles tiles-jsp 2.2.2 org.apache.tiles tiles-servlet 2.2.2 tiles 관련 라이브러리들을 pom.xml에 설정 합니다. ..

개발/스프링 2022.05.26