Spring

Spring boot

[spring 데이터 접근 핵심 원리 1] OverView

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard 스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의 백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의 www.inflearn.com 김영한님의 위 강의를 바탕으로 작성하였습니다. jdbc 하지만, 각 db 마다 사용법이 다르기에, db를 변경 시, 코드도 전부 변경해야한다. jdbc 표준 인터페이스가 등장한다. jdbc: 자바에서 db에 접속 가능하도록 하는 자바 API.JDBC는 DB에 자료를 쿼리, 업데이트 하..

Spring boot

[query Optimization] 캐싱 (Caching)

Caching: 동일한 요청에 대한 응답을 미리 저장해두고, 사용한다. 캐시에서 가져올 경우 속도가 비약적으로 상승( 탐색 필요 x disk에서 정보를 가져오지 않고, 메모리에서 가져오기에 Disk IO 감소) 다만 캐싱은 "일관성" 유지가 필수 적이다. 일관성: 캐시 내의 정보와 disk 내의 정보가 다르다면, 해당 캐싱 값은 "INVALID" 한 값이다. 캐싱 방법 1) 스프링 내장 캐싱 사용하기 implementation 'org.springframework.boot:spring-boot-starter-cache' @SpringBootApplication @EnableCaching public class TestApplication { public static void main(String[] ar..

Spring boot

[query Optimization] rdb와 객체의 차이에 대해

@Entity @Builder @AllArgsConstructor @NoArgsConstructor @Getter public class Friend { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "from_member") @JsonIgnore private ClubMember fromMember; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "to_member") @JsonIgnore private ClubMember toMember; @Enumerated(EnumTyp..

Spring boot

[JPA] Part 6 (객체지향 쿼리 언어 pt.2)

*김영한님의 JPA 기본편을 기반으로 작성하였습니다. jpql 경로 표현식 미리 보는 결론: "묵시적 join 사용하지말고 전부 명시하자!" ( 복잡한 db에서 묵시적 join이 발생 시, 인과관계 파악이 어려워진다. ) 상태 필드(state field): 경로 탐색의 끝, 탐색X ex) m.username. -> username이 마지막, 더 내려갈 수 없다. 단일 값 연관 경로: 묵시적 내부 조인(inner join) 발생, 탐색O select m.team from Member m; -> Member와 Team을 join 한 뒤, select(projection) 으로 team을 가져온다(묵시적 join 발생). 이와 같은 묵시적 join이 발생 되지 않게 주의하자. 컬렉션 값 연관 경로: 묵시적 내..

Spring boot

[JPA] Part 5 (객채지향 쿼리 언어 pt.1)

*김영한님의 JPA 기본편을 기반으로 작성하였습니다. JPA는 다양한 쿼리 방식을 지원한다. JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용 보통Jpql, QueryDSl로 쿼리를 짜고, 매우 복잡한 극소수의 쿼리들은 SpringJdbcTemplate을 통해 Native SQL로 구현 JPQL이란? JPQL은 Java Persistence Query Language의 약자로, 객체를 관리하는 Java Persistence API(JPA)의 일부분 JPQL은 객체 지향적인 방식으로 데이터베이스를 조회하고 조작할 수 있도록 해준다. JPQL은 SQL과 매우 유사하게 생겼지만, 객체를 대상으로 쿼리를 작성..

Spring boot

[JPA] Part2 (심화 매핑)

*김영한님의 JPA 기본 강의를 기반으로 작성하였습니다. [연관관계 매핑 기초] 객체와 RDB 사이에는 패러다임의 차이가 있다. 객체는 "참조"로 연관된 객체를 찾고, 테이블은 "외래 키를 통한 Join"으로 연관된 테이블을 찾는다. 이러한 차이를 기반으로 객체의 참조와 테이블의 연관관계( 외래 키)의 매핑에 대해 파악해야한다. 모델링 시 "객체" 를 중심으로 돌아가게 설계하는 것이 "객체 지향적 설계" 이고, 만약 RDB 테이블에 객체를 맞춰지게 데이터 중심으로 설계하게 되면, 그것을 객체지향적으로 올바르지 못한 설계이다. @JoinColumn은 DB 관점으로 보았을 때, 본인이 외래 키를 관리하며 상대 Table의 PK(Join할 때 사용)를 명시해주는 역할을 한다. mappedBy 역시 특정 관계와..

Spring boot

API 서버 구성과 JWT를 통한 인증, 인가

JSP, Thymeleaf: 서버에서 모든 데이터를 만들어서 브라우저에 전송하는 SSR 방식 요즘은 이런 SSR 방식이 아닌, CSR(Client Side Rendering) 을 사용하고, 점차 하나의 단독적인 애플리케이션으로 동작하는 SPA(Single Page Application)의 형태로 변화 중이다. 따라서 최근의 서버는 클라이언트가 원하는 XML, JSON 데이터를 제공하는 API 서버 방식이 주류이다. [API 서버] 요청받은 데이터만을 제공하는 서버 데이터만을 전달함으로써, 클라이언트 영역이 어떻게 구현되는지 상관 없이 구현할 수 있고, 클라이언트에서 자유롭게 전달 받은 데이터를 사용할 수 있어 유동성이 좋다. 이번 글에선 JSON을 이용하는 API 서버의 구성 방법에 대해 알아보자. AP..

Spring boot

Spring 소셜 로그인 처리 [OAuth]

이 글은 앞서 포스팅한 아래의 글과 이어지는 글 입니다. https://codenme.tistory.com/58 Spring security란? 스프링 시큐리티를 통한 작업은 크게 2가지로 나눌 수 있다. 인증(Authentication): 해당 사용자가 본인이 맞는지를 확인 인가(Authorization): 인증된 사용자가 요청한 자원에 접근 가능한지 확인 유저가 codenme.tistory.com [OAuth] 서비스 제공 업체들이 각자 다른 방식으로 로그인하지 않도록 제공하는 공통의 인증 방식. 기존에 사용자와 관리자, 2가지의 ROLE로 유저가 구분되었지만, OAuth를 사용하면, 구글, 네이버 등의 소셜 로그인 서비스를 제공하는 제 3의 인물을 포함해야한다. 나는 Google의 소셜 로그인 서비..

코앤미
'Spring' 태그의 글 목록 (4 Page)