본문 바로가기

스프링 부트8

[토비의 스프링] 오브젝트와 의존관계 (1장) 1.2 dao의 분리 객체지향의 꽃은 결국 관심사를 분리하는 것 (Seperating of Concerns) 왜? 자유로운 변경, 발전, 확장을 위해서 어떻게? 관심이 다른 것을 가능한 분리하여 서로 영향을 주지 않게 템플릿 메소드 패턴 : 슈퍼 클래스에 기본적인 기능을 구현하고 기능의 일부를 서브 클래스에 필요에 맞게 구현할 수 있도록 하는 패턴. (protect로 선택 가능하게, 추상 메서드로는 꼭 구현하게) 여기서 템플릿 메소드란? 기본 알고리즘 골격을 담은 메소드, 애플리케이션의 run() 같은게 템플릿 메서드이다. 훅 메서드 : protect로 구현된 선택적으로 오버라이드가 가능한 메서드 팩토리 메서드 패턴 : 서브 클래스에서 구체적인 오브젝트 생성 방법과 클래스를 결정하게 하는 패턴. 슈퍼클래.. 2022. 12. 21.
[자바 ORM 표준 JPA 프로그래밍] 고급 매핑 (7장) 📌 상속 관계 매핑 관계형 데이터베이스에는 상속이 없다. 그나마 '슈퍼타입-서브타입 관계' 모델링 기법이 상속과 비슷하다. 즉, ORM에서의 상속 관계 매핑은 이 모델링 기법이고 3가지 방법으로 구현할 수 있다. 조인 전략 : 각각을 모두 테이블로 만들고 조회 시 조인을 사용한다. 단일 테이블 전략 : 테이블을 하나만 사용해 통합한다. 구현 클래스 테이블 전략 : 서브 타입마다 하나의 테이블을 만든다. 1️⃣ 조인 전략 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아 기본 키 + 외래 키로 사용한다. 테이블은 타입의 개념이 없어 타입을 구분하는 칼럼을 추가해야 한다. @Entity @Inheritance(strategy = InheritanceType.JOINED) // 상속의 부모 클.. 2022. 12. 12.
[Security] Spring Security (2) ✍️ 학습 목표 의존성 추가 사용자 설정 권한 설정과 표현 📌 의존성 추가하기 🧷 Maven project - pom.xml org.springframework.boot spring-boot-starter-security 🧷 Gradle project - build.gradle implementation 'org.springframework.boot:spring-boot-starter-security' 스프링 시큐리티의 의존성을 추가하면 다음과 같은 기능을 사용할 수 있다. 서버가 가동되면 스프링 시큐리티 초기화 작업과 웹 보안 설정이 이루어진다. 모든 요청이 인증되어야 자원에 접근할 수 있다. 인증 방식은 폼 로그인 방식과 httpBasic 로그인 방식을 제공한다. 기본 로그인·로그아웃 페이지(+기본 .. 2022. 10. 5.
[Security] Spring Security (1) ✍️ 학습 목표 Spring Security란? Architecture 이해하기 📌 Spring Security 스프링 프레임워크에서 보안(인증, 인가)을 담당하는 스프링 하위 프레임워크이다. 시큐리티를 공부하기 위해 짚고갈 용어들이 존재한다. 🔒 보안 용어 Authentication, 인증 : 애플리케이션을 접근하는 사람이 누구인지 확인하는 절차 Authorization, 인가 : 확인된 사용자의 권한을 확인하고 부여하는 절차 Principal, 접근 주체 : 접근하려는 대상 Credential, 자격증명 : 비밀번호, 열쇠와 같은 인증을 위한 키 정리하면 스프링 시큐리티는 보호된 리소스에 접근하는 대상이 '누구'인지 확인해주고 그 '누구'에게 부여된 권한에 맞게 기능들을 이용할 수 있게 한다. ✔️ .. 2022. 10. 5.
TIL : @Modifying, Junit5 (13) 🌞 Spring 1️⃣ @Modifying 어노테이션 @Query 어노테이션을 통해 작성된 DML문(select 제외)을 사용할 때 붙이는 어노테이션이다. JpaRepository가 제공하는 기본적인 메서드 혹은 메서드 네이밍 쿼리에는 적용되지 않는다! 2️⃣ JPQL 쿼리 (짧) JPQL 쿼리로 검색 조건 처리 시 좀 어려울 수 있지만 count에 대한 처리가 쉽다, fetchCount()...! ✍️ Junit5 1️⃣ 기본 Annotation 🌀BeforeAll / 🌀AfterAll : 모든 테스트보다 이전/이후에 실행, static 메서드만. 🌀BeforeEach / 🌀AfterEach : 각 테스트 전/후에 실행 🌀DisplayName("테스트 임당") : 테스트 이름 정하기 🌀Disable :.. 2022. 9. 27.
자바 ORM 표준 JPA 프로그래밍 : 영속성 관리 (3장) 📌 엔티티 매니저 팩토리와 엔티티 매니저 🧷 엔티티 매니저 팩토리 팩토리를 만들기 위해서는 많은 비용을 요구한다. 하나만 만들어서 애플리케이션 전체에서 사용한다. 설정 정보(persistence.xml)를 바탕으로 생성한다. 서로 다른 스레드 간에 공유해도 문제가 없다. 🧷 엔티티 매니저 생성하는데 비용이 거의 들지 않는다. 동시성 문제 때문에 스레드 간에 공유 금지. 필요한 시점까지 커넥션을 얻지 않는다. 보통 트랜잭션을 시작할 때 커넥션을 얻는다. 엔티티 매니저 팩토리를 생성할 때 커넥션풀도 만드는 방법은 J2SE 환경에서 사용하는 방법이다. 대부분의 JPA 구현체들이 사용하는 방법이다. 📌 영속성 컨텍스트란? JPA를 이해하는데 가장 중요한 용어는 영속성 컨텍스트(persistence context.. 2022. 9. 26.