BackEnd263 [Java] JVM 구조 1. JVM, JDK, JRE " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번에는 JVM, JRE, JDK의 차이점에 대하여 알아보자. 1-1) JVM (Java Virtual Machine) 자바 가상 머신으로 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환(인터프리터와 JIT 컴파일러)하여 실행하는 역할을 합니다. 그럼 자바 바이트 코드는 무엇일까? 우리는 기본적으로 Hello.java 와 같이 java 파일을 만든다. 이를 컴파일한것이 바이트 코드이다. 이를 다음 명령을 통해서 compile 해보자. javac Hello.java 실행 결과를 보면 compile된 class 파일을 확인할 수 있다. 이를 JVM을 통해서 OS가 이해할 수 있는(.. BackEnd/Java 2022. 5. 19. [JPA] Spring Data JPA가 제공하는 QueryDsl 기능 내가 공부한 것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼 겸 상세히 기록하고 얕은 부분들은 가볍게 포스팅하겠습니다. 1. 인터페이스 지원 - QuerydslPredicateExecutor " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 여기서 소개하는 기능은 제약이 커서 복잡한 실무 환경에서 사용하기에는 많이 부족하다. 그래도 Spring Data 에서 제공하는 기능이므로 간단히 소개하고, 왜 부족한지 설명하겠다. 1-1) Interface 지원 - QuerydslPredicateExecutor 기존의 repository에 다음과 같이 QuerydslPredicateExecutor를 추가로 상속하게 되었다. public interface MemberRepository.. BackEnd/JPA 2022. 5. 16. [JPA] 실무 활용 - Spring Data JPA와 Querydsl 내가 공부한 것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼 겸 상세히 기록하고 얕은 부분들은 가볍게 포스팅하겠습니다. 이번 시간에는 이전에 순수 JPA로 만들었던 repository들을 Spring Data JPA를 통해 만들어 보자. 1. Spring Data JPA 리포지토리로 변경 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 ▶ Spring Data JPA - MemberRepository 코드 작성 public interface MemberRepository extends JpaRepository { List findByUsername(String username); } 기존의 순수 JPA를 활용한 MemberJpaRepository 와 비교해볼때, 상당히 .. BackEnd/JPA 2022. 5. 15. [JPA] 실무 활용 - 순수 JPA와 Querydsl 내가 공부한 것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼 겸 상세히 기록하고 얕은 부분들은 가볍게 포스팅하겠습니다. 이번 글은 다음과 같은 순서로 이어질 것 이다. 순수 JPA 리포지토리와 Querydsl 동적쿼리 Builder 적용 동적쿼리 Where 적용 조회 API 컨트롤러 개발 1. 순수 JPA 리포지토리와 Querydsl " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 우선 순수 JPA를 기반으로 repository를 하나 만들자. Repository public class MemberJpaRepository { private final EntityManager em; private final JPAQueryFactory jpaQueryFactory; pub.. BackEnd/JPA 2022. 5. 15. [JPA] QueryDSL 중급문법 - 2 내가 공부한 것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼 겸 상세히 기록하고 얕은 부분들은 가볍게 포스팅하겠습니다. 4. 동적 쿼리 - BooleanBuilder 사용 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 동적 쿼리를 해결하는 방식에는 2가지 방식이 존제한다. BooleanBuilder Where 다중 파라미터 사용 각각이 다 장단점이 있는 방식이다. 이에 대하여 알아보자. ▶ BooleanBuilder 를 사용하는 방법 @Test public void dynamic_query_boolean_builder_test() { String usernameParam = "member1"; Integer ageParam = 10; List result = searc.. BackEnd/JPA 2022. 5. 14. [JPA] QueryDSL 중급문법 - 1 내가 공부한 것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼 겸 상세히 기록하고 얕은 부분들은 가볍게 포스팅하겠습니다. 1. 프로젝션과 결과 반환 - 기본 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 프로젝션이란 열 단위로 조회하는 것을 의미한다. (select는 행 단위 조회) 프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있다. 프로젝션 대상이 둘 이상이면 튜플이나 DTO로 조회할 수 있다. 1-1) 프로젝션 대상이 하나인 경우 @Test public void simple_projection_test() { List result = queryFactory .select(member.username) .from(member) .fetch(); for (Strin.. BackEnd/JPA 2022. 5. 14. [JPA] QueryDSL 기본문법 - 4 내가 공부한 것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼 겸 상세히 기록하고 얕은 부분들은 가볍게 포스팅하겠습니다. 11. 서브 쿼리 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 서브쿼리를 만들기 위해서는 com.querydsl.jpa.JPAExpressions 을 사용하면 된다. JPAExpressions 또한 static import를 하여 편리하게 사용할 수 있다. 11-1) SubQuery의 eq 다음과 같이 나이가 가장 많은 회원을 찾는다고 해보자. /** * 나이가 가장 많은 회원 조회 */ @Test public void subQuery_test() { Member member10 = new Member("member10", 40); em.persis.. BackEnd/JPA 2022. 5. 14. [JPA] QueryDSL 기본문법 - 3 내가 공부한 것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼 겸 상세히 기록하고 얕은 부분들은 가볍게 포스팅하겠습니다. 8. 기본 Join " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 조인의 기본 문법은 첫 번째 파라미터에 조인 대상을 지정하고, 두 번째 파라미터에 별칭(alias)으로 사용할 Q 타입을 지정하면 된다. join(조인 대상, 별칭으로 사용할 Q타입) 테스트 코드를 통해서 Join을 알아보자. @DisplayName("팀 A에 소속된 모든 회원 찾기") @Test public void join_test() { List result = queryFactory .selectFrom(member) .join(member.team, team) .where(te.. BackEnd/JPA 2022. 5. 14. [JPA] QueryDSL 기본문법 - 2 내가 공부한 것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼 겸 상세히 기록하고 얕은 부분들은 가볍게 포스팅하겠습니다. 5. 정렬 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 QueryDSL을 통해 정렬을 해보자! desc() , asc() : 일반 정렬 nullsLast() , nullsFirst() : null 데이터 순서 부여 @Test public void sort() { // given em.persist(new Member(null, 100)); em.persist(new Member("member5", 100)); em.persist(new Member("member6", 100)); // when List members = queryFactory .se.. BackEnd/JPA 2022. 5. 13. [JPA] QueryDSL 기본문법 - 1 내가 공부한 것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼 겸 상세히 기록하고 얕은 부분들은 가볍게 포스팅하겠습니다. 1. JPQL vs Querydsl " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번시간에는 JPQL과 QueryDSL을 비교해보는 시간이다! 우선 다음과 같이 @BeforeEach를 통해 초기 데이터를 추가해주자. @SpringBootTest @Transactional public class QueryDslBasicTest { @Autowired EntityManager em; JPAQueryFactory queryFactory; @BeforeEach public void before() { queryFactory = new JPAQueryFact.. BackEnd/JPA 2022. 5. 13. [WEB] JWT (Json Web Token)이란? JWT에 대한 공부를 하며 요약도 할겸 스스로 정리하는 글 입니다. 틀린 내용은 댓글 남겨주시면 감사하겠습니다! 1. 탄생 배경 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 기존의 Session 방식은 stateful 한 단점이 있었습니다. 이는 stateless한 HTTP의 특성에도 위배되는 특성이죠! 그럼 왜 stateful이 단점일까? 서버에 session 정보를 저장해두어야 하기 때문에, 사용자의 요청이 많아져 서버를 수평 확장(scale out) 하는 경우 세션 정보를 저장하고 있는 서버로부터 복사를 해와 따로 저장해야 하기 때문에 번거로움이 있습니다. 이러한 문제를 해결하는 방법중 하나로, 각 서버들의 공통된 session 저장소를 만들어서 이 한곳으로부터 .. BackEnd/WEB 2022. 5. 11. [Spring Security] 스프링 시큐리티로 OAuth 로그인 구현하기 이번 시간에는 삽질을 하면서 구현한 OAuth 로그인에 대하여 정리하는 글 입니다. 이번 글 에서는 Spring Security를 활용하여 로그인을 구현해보려 한다. 기본 id, password 로그인 방식 + OAuth 로그인 방식을 동시에 구현할 것 이다! 기회가 된다면 다음번 글로 Spring Security 없이 로그인 하는 글 또한 올려보겠다. 1. 사전 구현 준비 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 1-1. 의존성 추가하기 우선 의존성은 다음과 같다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.spring.. BackEnd/Spring Security 2022. 5. 10. 이전 1 ··· 6 7 8 9 10 11 12 ··· 22 다음