[Spring] Spring Security와 OAuth 2.0으로 구글 소셜 로그인 구현(1)
Spring2023. 8. 11. 18:20[Spring] Spring Security와 OAuth 2.0으로 구글 소셜 로그인 구현(1)

이동욱 님의 '스프링부트와 aws로 혼자 구현하는 웹 서비스'를 참고하였습니다. 구글 로그인 기능과 소셜 서비스 기능을 사용하기 위해서는 구글 클라우드 플랫폼에서 신규 서비스를 등록해야 합니다. 신규 서비스를 등록하는 방법은 아래 참고자료에 잘 나와있습니다. 프로젝트 설정 1. application-oauth.yml 파일을 생성하고 발급받은 클라이언트 ID와 클라이언트 보안 비밀번호를 등록합니다. spring: security: oauth2: client: registration: google: client-id: 클라이언트 ID client-secret: 보안 비밀번호 scope: - email - profile 2. application.yml에 application-oauth.yml의 설정들을 가져..

JPA, Hibernate, Spring Data JPA?
Spring2023. 8. 6. 18:55JPA, Hibernate, Spring Data JPA?

JPA를 사용하는 이유 JPA는 CRUD 쿼리를 직접 작성할 필요가 없습니다. 또한, 부모-자식 관계 표현, 1:N 관계 표현, 상태와 행위를 한 곳에서 관리하는 등 객체지향 프로그래밍을 쉽게 할 수 있다는 장점이 있습니다. 즉 SQL이 아닌 객체 중심으로 개발이 가능합니다. 추가적으로 관계 매핑이 어렵거나 성능에 대한 이슈가 우려되는 경우 네이티브 SQL 이란 기능을 제공하는데, 이는 SQL을 직접 작성하여 사용할 수 있습니다. JPA, Hibernate, Spring Data JPA? JPA(Java Persistence API)는 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스로서 자바 표준명세서입니다. ORM: 객체와 관계형 데이터베이스의 데이터를 자동으로..

[Spring] Build.Gradle 공부하기
Spring2023. 7. 28. 18:39[Spring] Build.Gradle 공부하기

스프링 프로젝트를 생성할 때 스프링 이니셜라이저를 통해서 진행하였고 build.gradle은 대충 넘어갔습니다. 그러다 보니 추가로 의존성을 추가하는 상황에서 헤매는 경우가 있어 공부하고자 합니다. Gradle이란? Gradle을 알기에 앞서 빌드를 먼저 알아야 합니다. 빌드(build)란 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 그 결과를 의미합니다. 빌드 도구는 이러한 빌드 과정을 도와주는 도구를 말합니다. 빌드 도구로는 Ant, Maven, Gradle이 있습니다. 이 중에서 Gradle은 Ant, Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 결합한 오픈소스 빌드 자동화 도구입니다. build.gradle 알아보기 build.gradle 파일은..

[Spring] Swagger 사용하기
Spring2023. 6. 14. 17:49[Spring] Swagger 사용하기

배달의 민족 클론코딩을 진행할 때 API 문서를 아래와 같이 직접 스프레드시트에 작성을 했었습니다. 하지만 이 작업을 대신해 주는 Swagger 라이브러리의 존재를 알게 되었고 JDBC로 작성한 코드를 JPA로 변환하는 동시에 Swagger을 사용한 API 문서 작성을 공부해 보는 시간을 가졌습니다. Swagger 의존성 추가 maven repository에서 Springfox Boot Starter를 찾아 build.gradle에 추가합니다. implementation 'io.springfox:springfox-boot-starter:3.0.0' 의존성 추가 후, 실행을 시켰는데 아래와 같은 에러가 발생하였고 application.yml에 다음 코드를 입력하여 해결했습니다. spring.mvc.path..

[Spring] 엔티티에 생성일자 및 수정일자 칼럼 간편히 추가하기
Spring2023. 6. 12. 17:23[Spring] 엔티티에 생성일자 및 수정일자 칼럼 간편히 추가하기

데이터베이스에서 테이블마다 생성일자와 수정일자 칼럼은 필수적으로 있어야 한다고 합니다. 그 이유는 아래 참고 자료에 추가하였습니다. JPA Auditing? 엔티티마다 생성일자와 수정일자 필드를 추가하면 코드가 중복되기에 JPA Auditing을 사용하여 이를 중복을 제거하고 간편히 추가해 보겠습니다. 여기서 Audit은 검사하다, 감사하다 와 같은 뜻으로 사용됩니다. JPA Auditing은 Spring Data JPA에서 시간에 대해서 자동으로 값을 넣어주는 기능입니다. 이를 이용하면 자동으로 시간을 매핑하여 데이터베이스 테이블에 넣어주게 됩니다. 코드 예시 BaseTimeEntity를 생성하고, 생성일자와 수정일자 필드를 추가합니다. @Getter @MappedSuperclass @EntityLis..

[Spring] 쿼리 메서드 기능 이해 및 응용1
Spring2023. 6. 7. 21:32[Spring] 쿼리 메서드 기능 이해 및 응용1

JpaRepository를 상속받은 repository는 save(), findAll(), findById() 메서드를 따로 구현하지 않아도 사용 가능합니다. 그렇다면 findByName처럼 이름으로 조회를 하고 싶을 때는 어떻게 해야 할까요? Query Method? JPA Query Method는 메서드 이름을 사용하여 데이터베이스에서 데이터를 검색하기 위해 Spring Data JPA Repository에서 쿼리를 정의하는 방법입니다. 쿼리 메서드의 기능은 다음과 같습니다. 메서드 이름으로 쿼리 생성 메서드 이름으로 JPA NamedQuery 호출 @Query 어노테이션을 사용해 repository interface에 쿼리 직접 정의 메서드 이름으로 쿼리 생성 DB에 영희, 철수, 명규가 저장되어 ..

[Spring]OSIV와 성능 최적화
Spring2023. 6. 6. 20:30[Spring]OSIV와 성능 최적화

OSIV란?Open Session In View의 줄임말로, JPA에서 EntityManager의 역할을 하이버네이트에서는 Session이 한다. JPA에서는 Open EntityManager In View라 한다. (줄임말은 그대로 OSIV) OSIV ONspring.jpa.open-in-view: true #default 값은 true최초 데이터베이스 커넥션 시작 시점부터 API 응답이 끝날 때까지 영속성 컨텍스트와 데이터베이스 커넥션을 유지한다. 보통 서비스 계층에서 DB 트랜잭션을 시작할 때, 영속성 컨텍스트가 DB 커넥션을 가져온다. OSIV값이 true라면, 서비스 계층의 @Transactional 메서드를 벗어나도 컨트롤러 계층에서까지 커넥션을 계속 유지하기에 지연 로딩을 가능하게 한다. 하..

[Spring] OneToMany 관계에서 페치 조인 최적화
Spring2023. 5. 3. 22:49[Spring] OneToMany 관계에서 페치 조인 최적화

인프런 김영한 님의 "실전! 스프링 부트와 jPA 활용2 - API 개발과 성능 최적화"를 참고하였습니다. https://kyko.tistory.com/15 에서 XToOne(OneToOne, ManyToOne) 관계일 때, 조회 성능 최적화에 대해서 다뤘습니다. 이번에는 OneToMany관계에서의 조회 성능 최적화에 대해서 다뤄보겠습니다. 지난번 예제와 동일하게 Order와 Member는 ManyToOne 관계, Order와 Delivery는 OneToOne 관계입니다. 여기에 OrderItem을 추가하겠습니다. Order와 OrderItem은 OneToMany 관계입니다. 엔티티를 DTO로 변환 Order 엔티티 정보를 가져온 뒤 OrderDto로 변환합니다. 마찬가지로 OrderDto에 있는 Ord..

image