spring boot

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..

back-end study

[Optimization] 인덱싱(indexing)을 통한 성능 개선 분석

indexing이란? 인덱스를 설정하면 해당 컬럼들의 값을 해시 맵 형태로 메모리에 저장해두고 검색할 때 메모리에서 검색을 먼저 하고 해당하는 행을 찾아 반환하지만 인덱스 생성하는데에도 비용이 들고, 데이터 수정, 추가 시마다 업데이트가 필요하기에 데이터의 추가, 수정 삭제에 대한 처리 속도가 낮아진다. 그렇기에 인덱싱으로 "유의미한" 검색 성능 향상을 만들 수 없다면, 만들지 않는 것이 좋다. 그럼 언제 인덱싱이 효과적이지 못할까? 인덱싱이 효과적이지 않은 상황 - 작은 테이블: 작은 크기의 테이블에서는 인덱스가 적용되어도 큰 차이를 만들지 못할 수 있다. 이런 경우에는 인덱스를 적용하는 대신에 테이블을 자주 스캔하는 것이 더 효율적일 수 있다. - 자주 변경되는 테이블: 자주 데이터를 추가, 수정, ..

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

Spring 소셜 로그인 처리 [OAuth]

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

Spring boot

[toyProject] 게시물 사이트 Part 3

@RequestMapping("/board/") /board url을 처리하는 컨트롤러임을 알려준다. SpringBoot 애플리케이션이 실행되면 애플리케이션에서 사용할 baen들을 담을 ApplicationContext를 생성하고 초기화한다. @RequestMapping이 붙은 메서드들이 handler에 등록되는 것은 ApplicationContext가 refresh되는 과정에서 일어난다. refresh과정에서 Spring Application 구동을 위해 많은 Baen들이 생성되고, 그 중 하나가 RequestMappingHandlerMapping이다. 이 Bean은 우리가 @RequestMapping으로 등록한 메서드들을 가지고 있다가 요청이 들어오면 Mapping해주는 역할을 수행한다. 그 이후 B..

Spring boot

[toyProject] 게시물 사이트 Part 2

Page 처리 ( PageResultDTO 구조) 목적: repository의 JPQL이 select한 정보 Service 이 가운데 페이지 처리를 2개의 Page관련 DTO로 처리한다! 다양한 domain, Service 존재하고, 다양한 JPQL 존재. 다양한 JPQL에서 select된 정보들은 Object[] 타입에 저장한다. >> 다양한 JPQL에 따른 다양한 Object[] 구조 Ex: Long, String 이 select되면 이 두개 저장, Member, Board 객체를 select시 Board, Member 객체가 저장, ……. >> 유동적인 JPQL 결과값들 Domain or Entity: 각 Entity는 계층간 이동할 때, Entity 채로 움직이지 않고, 필요한 정보만 담은 DTO..

Spring boot

[toyProject] 게시물 사이트 Part 1

http://13.125.105.236/ 위 사이트 개발에 대한 정리글입니다. (AWS 배포가 중단되면 접속이 제한될 수 있습니다) https://github.com/shyswy/Community-Site GitHub - shyswy/Community-Site: Simple community Site Simple community Site. Contribute to shyswy/Community-Site development by creating an account on GitHub. github.com 위 링크는 프로젝트 리포지토리입니다. README를 자세히 작성했으니 참고하시면 됩니다. DTO: 각 계층간 정보 전달시 필요한 정보만 담아 전달. Ex: BoardDTO: 게시물(Board)에서 필요한..

Spring boot

[김영한 스프링 입문] 주요 이론 정리

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8 [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 김영한님의 스프링 입문 강의 속 내용 중 이론적인 포인트를 위주로 몇가지 내용을 추가하여 작성하였습니다. MVC 기본적인 MVC 구조. return으로 위치(html)잡고 model에 데이터를 담아 뷰 리졸버에 전달. -> ..

코앤미
'spring boot' 태그의 글 목록