본문 바로가기
728x90
반응형

🍃SpringFramework80

[JPA] 1:1 Relation. 관계 설정 💡 1대1 관계 설정 1:1 관계에서는 @OneToOne 어노테이션을 사용하여 관계를 정의해 줄 수 있다. 일대다(1:N), 다대일(N:1) 관계에서는 다(N) 쪽이 항상 외래 키를 가지고 있다. 하지만 일대일(1:1) 관계에서는 주 테이블이나 대상이 되는 테이블 양쪽 모두 외래 키를 가질 수 있다. 그렇기 때문에 일대일 관계를 적용할 때는 주 테이블과 대상이 되는 테이블, 어느 쪽에 외래 키를 둘지 선택 해야 한다. JPA에서는 외래키를 갖는 Entity가 연관 관계의 주인이 되어 외래키를 관리(등록,수정,삭제) 할 수 있다. 1-1. 일대일 연관 관계에서 외래 키가 주 테이블에 있는 경우 - 단방향 1-2. 일대일 연관 관계에서 외래 키가 주 테이블에 있는 경우 - 양방향 2-1. 일대일 연관 관계에.. 2023. 9. 10.
[JPA] Entity Listener. 엔티티 리스너 💡 Entity Listener란? 엔티티의 변화를 감지하고 테이블의 데이터를 조작한다. @PrePersist Persist(insert)메서드가 호출되기 전에 실행되는 메서드 @PreUpdate merge메서드가 호출되기 전에 실행되는 메서드 @PreRemove Delete메서드가 호출되기 전에 실행되는 메서드 @PostPersist Persist(insert)메서드가 호출된 이후에 실행되는 메서드 @PostUpdate merge메서드가 호출된 후에 실행되는 메서드 @PostRemove Delete메서드가 호출된 후에 실행되는 메서드 @PostLoad Select조회가 일어난 직후에 실행되는 메서드 @EntityListeners(value = ???.class) Entity Listener를 현재 En.. 2023. 9. 10.
[JPA] JPA Annotation. 어노테이션 💡 JPA에서 사용되는 어노테이션! 1. @Entity JPA를 사용해 테이블과 매핑할 클래스에 붙여주는 어노테이션이다. JPA가 해당 클래스를 관리하게 된다. 속성 기능 name JPA에서 사용할 엔티티 이름 지정name을 쓰지 않을 경우 (default) 클래스 이름을 entity 이름으로 지정 @Entity의 name = "user2"로 함으로써 user2 테이블이 생성된 것을 볼 수 있다. @Entity(name = "user2") publicclassUser {} 주의 사항 기본 생성자가 꼭 필요 (@NoArgsConstructor) final, enum, interface, innter class에서는 사용 불가 필드(변수)를 final로 선언 불가 2. @Table 엔티티와 매핑할 테이블을 .. 2023. 9. 10.
[JPA] Query Method. 쿼리 메서드 Spring Data JPA에서 제공하는 공동 인터페이스는 기본적인 CRUD를 제공해준다. (JpaRepository) JpaRepository Entity의 클래스명 + Repository 로 인터페이스 생성 JpaRepository 상속 (extends) 속성으로 ‘Entity의 클래스명’, ‘Entity기본키(Id)의 타입’ 지정 💡 QueryMethod 이름 지정 간단한 쿼리일 경우 이와 같은 쿼리 메서드를 이용한다. 같은 분류의 메서드는 이름만 다를 뿐 똑같은 기능을 한다. (조회 : find..By, read..By, get…By 등) spring data JPA - 참조 문서 (spring.io) QueryMethod 필터 조건 쿼리 조건 메서드명 실제 쿼리문 Distinct findDist.. 2023. 9. 10.
[JPA] H2 Database 💡 H2 Database 란? 자바로 작성된 관계형 데이터베이스 관리 시스템이다. 장점 따로 설치가 필요없다 용량이 매우 가볍다 웹용 콘솔(쿼리툴) 제공하여 개발용 로컬DB로 사용 용이 특징 JAVA로 작성된 오픈소스 RDBMS 스프링 부트가 지원하는 인메모리 관계형 데이터베이스 인메모리로 띄우면 애플리케이션 재기동 때마다 초기화 로컬 환경, 테스트 환경에서 많이 쓰임 In-Memory DB 컴퓨터가 꺼지면 모든 내용이 날라감 연속성이 없음 연속성을 주는 방법이 있지만, 그 방법을 쓰려면 그냥 일반 DB모드로 쓰면 된다. 💡 사용하기 Intellij에서 간단하게 사용하는 방법 서버 실행 Run의 Console창에서 “H2 console available at '/h2-console'. Database a.. 2023. 9. 10.
[JPA] JPA란? 💡 JPA (Java Persistence API) 란? 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. JPA를 구현한 대표적인 오픈소스로는 Hibernate가 있다. 💡 우선 ORM에 대해 알아야 한다! 애플리케이션 Class와 DataBase테이블을 매핑(연결)해준다. 즉 애플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이다. 장점 SQL문이 아닌 Method를 통해 DB를 조작할 수 있어, 개발자는 객체 모델을 이용하여 비즈니스 로직을 구성하는데만 집중할 수 있음.(내부적으로는 쿼리를 생성하여 DB를 조작함. 하지.. 2023. 9. 10.
[SpringBatch] Batch Architecture. 배치 아키텍처 💡 Spring Batch의 구조 JobRepositor. 다양한 배치 수행과 관련된 수치 데이터와 잡의 상태를 유지 및 관리한다. 일반적으로 관계형 데이터베이스를 사용하며 스프링 배치 내의 대부분의 주요 컴포넌트가 공유한다. 실행된 Step, 현재 상태, 읽은 아이템 및 처리된 아이템 수 등이 모두 JobRepository에 저장된다. Job Job은 배치 처리 과정을 하나의 단위로 만들어 표현한 객체이고 여러 Step 인스턴스를 포함하는 컨테이너이다. Job이 실행될 때 스프링 배치의 많은 컴포넌트는 탄력성(resiliency)을 제공하기 위해 서로 상호작용을 한다. JobLauncher Job을 실행하는 역할을 담당한다. Job.execute을 호출하는 역할이다. Job의 재실행 가능 여부 검증, .. 2023. 9. 10.
[SpringBatch] 스프링 배치란? 💡 스프링 배치(Spring Batch)란? Spring Batch는 엔터프라이즈 시스템의 운영에 있어 대용량 일괄처리의 편의를 위해 설계된 가볍고 포괄적인 배치 프레임워크이다. Spring의 특성을 그대로 가져왔기 때문에 DI, AOP, 서비스 추상화 등 Spring 프레임워크의 3대 요소를 모두 사용할 수 있다. 사용 이유 대용량의 비즈니스 데이터를 복잡한 작업으로 처리해야하는 경우 특정한 시점에 스케쥴러를 통해 자동화된 작업이 필요한 경우 (ex. 푸시알림, 월 별 리포트) 대용량 데이터의 포맷을 변경, 유효성 검사 등의 작업을 트랜잭션 안에서 처리 후 기록해야하는 경우 Spring Batch는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처.. 2023. 9. 10.
[SpringBoot] MultipartFile 업로드/다운로드 하기 SpringBoot에서 MultipartFile 저장하고, 다운로드 받기 # File Upload Controller 1. controller에서 요청을 받을 때 MultipartHttpServletRequest 타입으로 request를 받아야 한다. 2. 파일과 같이 request body를 받아야 한다면 String타입으로 받은 후 Gson객체를 이용해 형변환 해야한다. 3. front에서 api요청 시 보낸 파일의 변수명으로 파일을 꺼내온다. > request.getFile("???") @RequestMapping(value = "/registerPrivacyResult", method = RequestMethod.POST) public BaseResult registerPrivacyResult(M.. 2023. 9. 5.
728x90
반응형