Home

0

JPA 연관 관계 - 일대다

목차 JPA 연관 관계 - 고아 객체 JPA 연관 관계 - 즉시로딩과 지연로딩 JPA 연관 관계 - 프록시 객체 JPA 연관 관계 - @MappedSuperclass JPA 연관 관계 - 상속 관계 Mapping JPA 연관 관계 - 영속성 전이 Cascade JPA 연관 관계 - 양방향 연관관계와 연관과계의 주인 JPA 연관 관계 - 양방향 연관관계 JPA 연관 관계 - 객체 지향 스럽게 모델링 하기 JPA 연관 관계 - 객체 관계 모델링하기 JPA 연관 관계 공통 Mapping 정보를 관리하기 위한 MappedSuperclass Entity 에 공통적으로 들어가는 Mapping 정보를 관리해 코드가 중복해서 작성하는 것을 방지하기 위해 사용하는 어노테이션 상속관계 Mapping 이 아니다. 부모 클래스를 상속 받는 자식 클래스에 Mapping 정보만 을 제공한다. 직접 생성해서 사용할 일이 없으므로 추상클래스(abstract) 를 사용하는 것이 좋다. MappedSuperclass 클래스를 상속 받기 위해서는 같은 @MappedSuperclass 를 사용한 클래스나 @Entity 을 이용한 클래스만 상속이 가능하다. 요구 사항 모든 Entity 에는 생성자, 생성일, 수정자, 수정일 정보가 들어가야 한다. 모든 Entity 에 공통적으로 들어가는 Mapping 정보 를 관리하기 위한 BaseEntity 클래스를 생성한다. @MappedSuperclasspublic abstract class BaseEntity { private String createdBy; private LocalDateTime createdDate; private String lastModifiedBy; private LocalDateTime lastModifiedDate;} 공통 Mapping 정보는 상속 을 통해 현재 Entity 에 적용할 수 있다.

0

JPA 연관 관계 - 다대일

목차 JPA 연관 관계 - 고아 객체 JPA 연관 관계 - 즉시로딩과 지연로딩 JPA 연관 관계 - 프록시 객체 JPA 연관 관계 - @MappedSuperclass JPA 연관 관계 - 상속 관계 Mapping JPA 연관 관계 - 영속성 전이 Cascade JPA 연관 관계 - 양방향 연관관계와 연관과계의 주인 JPA 연관 관계 - 양방향 연관관계 JPA 연관 관계 - 객체 지향 스럽게 모델링 하기 JPA 연관 관계 - 객체 관계 모델링하기 JPA 연관 관계 다 대 일연관관계 매핑시 고려사항 다중성 단방향, 양방향 연관관계 주인 테이블 외래키 하나로 양쪽 조인 가능 사실 방향이라는 개념이 없음 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 연관관계 주인

0

Spring Security - DelegateFilterProxy

목차 Spring Security 권한 계층 사용하기 - @RoleHierarcy Spring Security - DelegateFilterProxy Spring Security - Remember Me와 관련된 인증 API - RememberMeConfigurer Spring Security - RembmerMeAuthenticationFilter Spring Security - SessionManagementFilter & ConcurrentSessionFilter Spring Security - 인가 API ExpressionUrlAuthorizationConfigurer Spring Security - Security 설정을 위한 WebSecurityConfigurerAdatper Spring Security - AuthenticationProvider Spring Security - AuthenticationManager Spring Security - UsernamePasswordAuthenticationFilter & AbstractAuthenticationProcessingFilter Spring Security - SecurityContextHolder 와 SecurityContext Spring Security - Authentication 객체 Filter 란 기본적으로 Filter 는 Servlet Filter 를 의미한다. Servlet Filter 는 서블릿 스펙에 정의된 기술 서블릿 컨테이너에서 생성되고 실행된다. Filter 는 Spring 에서 생성한 Bean 을 사용하거나 Spring 기술을 사용할 수 없다. Filter 를 사용해 자원에 대한 접근 전/후에 대한 처리를 진행할 수 있다. DelegatingFilterProxy Servlet Container 와 Spring Container 사이에 다리 역할을 해 Spring Bean 으로 등록된 Filter 를 찾아 요청을 위임하는 역할을 한다. Servlet Container 위에 구현된 Filter Servelt Filter 가 요청을 DelegatingFilterProxy 로 전달 DelegatingFilterProxy 는 들어온 요청을 Spring Container 위에 생성된 Filter Bean 에 요청을 위임 springSecurityFilterChain 이름으로 생성된 Bean 을 찾아 요청을 위임한다. FilterChainProxy

0

JPA JPQL - Fetch Join

목차 JPA JPQL - Fetch Join JPA JPQL - Projection (Select) JPA JPQL (Java Persistence Query Language) JPA - 객체지향 쿼리 언어 N+1 문제란 ? 데이터 조회를 위해 한번의 쿼리가 발생하지만 연관관계에 의해 연관된 객체 모두를 가져오기 위해 N 번의 쿼리가 발생하는 문제 필요한 데이터 조회를 위해 한번의 Select 쿼리가 발생해 객체를 가져왔지만, 연관관계가 설정된 객체는 Lazy 설정 으로 인해 실제 값이 아닌 Proxy 객체 로 대체하는데 해당 객체에 접근할 경우 실제 데이터를 가져오기 위해 처음에 조회된 데이터 만큼 쿼리가 추가적으로 발생하는 문제 Fetch Join Lazy 설정을 무시하고 연관된 객체를 한번에 가져온다. JPQL 에서는 N + 1 문제를 해결하기 위해 fetch join 을 제공한다. fetch join 을 이용해 JPQL 을 작성하게 되면 Lazy 설정을 무시하고, Order 조회시 Member 객체와 Delivery 객체를 전부 다 가져온다. public List<Order> findAllWithMemberDelivery(){ return em.createQuery( "select o from Order o"+ " join fetch o.member m" + " join fetch o.delivery d", Order.class ).getResultList();}

0

JPA JPQL (Java Persistence Query Language)

목차 JPA JPQL - Fetch Join JPA JPQL - Projection (Select) JPA JPQL (Java Persistence Query Language) JPA - 객체지향 쿼리 언어 JPQL JPQL 은 객체지향 쿼리 언어 로 테이블 을 대상으로 쿼리하는 것이 아니라 엔티티 객체 를 대상으로 쿼리한다.JPQL 은 SQL 을 추상화 해서 특정 데이터 베이스 SQL 에 의존하지 않는다. JPQL 문법 select m from Memeber as m where m.age > 18 Entity 와 속성 은 대소문자 구분 O (Member, age) JPQL 키워드 는 대소문자 구분 X (select, from, where) 엔티티 이름 사용, 테이블 이름이 아님 별칭(alias) 은 필수 (m) TypeQuery, Query 반환 타입 형태에 따라 사용하는 타입이 다르다.

0

JPA JPQL - Projection (Select)

목차 JPA JPQL - Fetch Join JPA JPQL - Projection (Select) JPA JPQL (Java Persistence Query Language) JPA - 객체지향 쿼리 언어 Projection 대상 Entity, 임베디드 타입, 스칼라 타입(숫자, 문자등 기본 타입) // Entity select m from Member m// Entity select m.team from Member m// 임베디드 타입select m.address from Member m// 스칼라 타입select m.username, m.age from Member m

0

JPA - 객체지향 쿼리 언어

목차 JPA JPQL - Fetch Join JPA JPQL - Projection (Select) JPA JPQL (Java Persistence Query Language) JPA - 객체지향 쿼리 언어 객체 지향 쿼리 언어 종류 JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC API 직접 사용, MyBatis, SrpignjdbcTemplate 함께 사용 JPQL JPA 를 사용하면 엔티티 객체 를 중심으로 개발 문제는 검색 쿼리 검색을 할때도 테이블이 나닌 엔티티 객체 를 대상으로 검색 모든 DB 데이터를 객체로 변화해서 검색하는 것은 불가능 애플리케이션이 필요한 데이터만 DB 에서 불러오려면 결국 검색 조건인 포함된 SQL 이 필요 JPA 는 SQL 을 추상화한 JPQL 이라는 객체지향 쿼리 언어 제공 SQL 과 문법 유사, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 지원 JPQL 은 엔티티 객체를 대상으로 쿼리 SQL 은 데이터 베이스 테이블을 대상으로 쿼리 public class JpaMain { public static void main(String[] ars) { EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("hello"); EntityManager em = entityManagerFactory.createEntityManager(); EntityTransaction transaction = em.getTransaction(); transaction.begin(); try { String qlString = "select m from Member m where m.username like '%kim%'"; List<Member> result = em.createQuery(qlString, Member.class) .getResultList(); } catch (Exception e) { transaction.rollback(); } finally { em.close(); } entityManagerFactory.close(); }}

0

Spring Batch - 배치 초기화 설정

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing JobLauncherApplicationRunner Spring Batch 작업을 시작하는 ApplicationRunner 로서 BatchAutoConfiguration 에서 생성된다. Spring boot 에서 제공하는 ApplicationRunner 의 구현체로 어플리케이션이 정상적으로 구동되자 마자 실행된다. Bean 으로 등록된 모든 Job 을 실행시킨다. BatchProperties Spring Batch 의 환경 설정 클래스 Job 이름, 스키마 초기화 설정, 테이블 Prefix 등의 값을 설정할 수 있다. application.properties or application.yml 파일에 설정한다.

0

Spring Batch - 13. JobLauncher

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing JobLauncher Batch Job 을 실행시키는 역할 Job 과 JobParameters 를 인자로 받으며 요청된 Batch 작업을 수행한 후 최종 Client 에게 JobExecution 을 반환한다. Spring Batch 가 구동 되면 JobLauncher Bean 이 자동 생성된다. JobLauncher 를 이용한 Job 실행 Spring boot Batch 에서는 JobLauncherApplicationRunner 가 자동적으로 JobLauncher 를 실행시킨다. 동기적 실행 taskExecutor 를 SyncTaskExecutor 로 설정할 경우 JobExecution 을 획득하고 배치 처리를 최종 완료한 후 Client 에게 JobExecution 을 반환한다. 스케줄러 에 의한 배치처리에 적합하다. 비 동기적 실행 taksExecutor 가 SimpleAsyncTaskExecutor 로 설정할 경우 JobExecution 을 획득한 후 Client 에게 바로 JobExecution 을 반환하고 배치처리를 완료한다. HTTP 요청 에 의한 배치처리에 적합하다. 배치 처리 시간이 길어질 경우 응답이 늦어지지 않도록 한다.

0

Spring Batch - 12. JobRepository

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing JobRepository Batch 작업 중에 생성되거나 변경되는 메타데이터들을 저장하는 저장소 역할 JobRepository는 스프링 배치의 핵심 컴포넌트 중 하나로, Job을 실행하거나 재시작할 때 사용되는 메타데이터를 관리합니다. 이 메타데이터에는 Job의 실행 상태, Job의 실행에 필요한 파라미터, 실행 시간 등의 정보가 포함됩니다. JobRepository는 Job의 실행 상태를 추적하고, Job이 실행되는 동안 발생하는 예외를 처리하고, 재시작을 위해 이전 실행 정보를 보관합니다. Job 이 언제 수행됐고, 언제 끝났으며, 몇 번 실행됐고 실행에 대한 결과 등의 배치 작업 실행과 관련된 모든 Meta Data 를 저장한다. JobLauncher, Job, Step 구현체 내부에서 CRUD 기능을 처리한다.