본문 바로가기
728x90

전체 글139

JPA 엔티티 매핑 - 소개 및 객체와 테이블 매핑 이번 포스팅은 JPA의 엔티티 매핑에 대해서 알아보겠습니다. 먼저, 엔티티 매핑 소개가 있겠습니다. 객체와 테이블 매핑 : @Entity, @Table 필드와 테이블 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn ... 객체와 테이블 매핑 @Entity - @Entity가 붙은 클래스는 JPA가 관리합니다. => 엔티티라고 부릅니다. - JPA를 사용하기 위해서는 클래스에 꼭 @Entity를 붙여줘야 합니다. - 기본 생성자가 필수입니다!! 하지만 생성자가 아무것도 없다면 자동으로 기본 생성자를 만들어 줍니다. 따라서 특정 파라미터가 있는 생성자가 필요하다면 기본 생성자를 만들어줘야 합니다. - final ,enum,interface ,inn.. 2021. 11. 15.
스프링 이메일 인증 이번 포스팅에서는 회원가입때 사용하기 위한 이메일 인증에 대해서 알아보겠습니다. 우선 결과를 먼저 보여드리겠습니다. 포스트맨을 이용해 emailCheck url에 email을 작성한 뒤 보냅니다. 밑의 사진은 저의 이메일주소로 온 인증번호입니다. 메일로 온 인증번호와 포스트맨의 리턴된 값이 같은 것을 알 수 있습니다. 이메일 인증을 구현하기 위해서 email 라이브러리를 먼저 가져와야 합니다. build.gradle에 위의 문장을 추가합니다. https://mvnrepository.com/repos/central 이곳에서 spring-boot-starter-mail을 검색한뒤 가장 많은 사람이 사용한 버젼을 가져오면 됩니다. 이제 추가적으로 .yml파일에 메일에 관련된 내용을 추가해야합니다. .yml 파.. 2021. 11. 12.
[백준 17928] 오큰수[java] 문제 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 해결 방법 스택을 어떻게 활용해야 할지 어려운 문제였다. 스택을 쓰지 않고 풀 수 있을거 같아서 풀고 제출했는데... 정답이 틀렸다니... 위의 이유로 스택을 활용하는 방법에 대해서 고민해봤습니다. stack 활용 1. 배열의 index를 스택의 원소로 이용합니다. 2. for문을 0부터 n-1까지 반복합니다. 0~n-1 -> i 3. while문을 사용하고 스택이 비어있지 않고 stack.peek값보.. 2021. 11. 5.
[백준 1874] 스택 수열 [java] 문제 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 해결 방법 처음에 정말 어렵게 접근했다가 도저히 안풀려서 구글링을 하고 좌절했다....(이렇게 쉬운 문제였을 수가...) 스택과, 배열을 잘 이용하면 쉽게 풀 수 있는 문제이다. 입력받은 숫자들의 수열은 배열에 넣고 for문을 통해 1~n까지 반복한다. 이때 stack에는 1부터 순서대로 넣고 인덱스 값과 리스.. 2021. 11. 5.
jpa - 플러시, 준영속 상태 플러시 jpa의 플러시에 대해서 알아보겠습니다. 플러시란 - 영속성 컨텍스트의 변경내용을 데이터베이스에 반영합니다. 플러시가 발생할 때 - 변경 감지 - 수정된 엔티티 쓰지 지연 SQL 저장소에 등록 - 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시하는 방법 - em.flush() - 직접호출합니다. - 트랜잭션 커밋 - 플러시를 자동 호출합니다. - JPQL 쿼리 실행 - 플러시 자동 호출 Member member = new Member(200L, "memberA"); em.persist(member); em.flush(); System.out.println("======짠======"); tx.commit(); 위의 코드를 실행할 경우 위의.. 2021. 10. 16.
JPA - 영속성 컨텍스트2 저번 포스팅에 이어서 영속성 컨텍스트에 대해서 더 자세하게 알아보겠습니다. 1차 캐시 - 영속성 컨텍스트 안에는 1차 캐시가 있습니다. - 1차 캐시는 @Id와 그에 매칭되는 Entity가 있습니다. - em.persist(member)를 하면 바로 데이터베이스에 저장되는 것이 아닙니다. - 우선 1차 캐시에 저장되었다가 transaction.commit를 했을 때 쿼리문이 발생합니다. // 비영속 Member member = new Member(); member.setId(100L); member.setName("hello"); // 영속 em.persist(member); System.out.println("=====쿼리문?====="); tx.commit(); 위의 코드를 실행시켰을 때 tx.com.. 2021. 10. 16.
728x90