전체 글153 [JPA] 양방향 연관관계와 연관관계의 주인 인프런 강의 참고 JPA는 영속성컨텍스트의 매커니즘 이해와 양방향연관관계와 연관관계의 주인을 정해주는 이부분이 가장 헷갈리고 어렵다고 합니다. 왜 어렵냐하면 객체랑 테이블이 두개가 패러다임차이 때문입니다.. 객체는 연관되어있는것들을 '참조'라는것을 사용하고 데이터베이스는 테이블은 '외래키'를 가지고 조인을 활용한다. 두개의 차이와 차이에서오는것을 이해를 해야 연관관계의 주인이라는 개념이라는게 있다는걸 알게되고 이해 할 수 있습니다. 양방향 매핑 테이블 연관관계를 보면 단방향 연관관계에서의 연관관계와 차이가 하나도 없는것을 알 수 있습니다. 멤버에서 팀을알고싶으면 멤버의 TEAM_ID와 팀의 TEAM_ID를 조인하면 되고 팀 테이블에서 우리팀의 멤버가 누가있는지 알고 싶으면 팀의 TEAM_ID와 멤버의 T.. JPA 2022. 6. 15. [JPA] 필드와 컬럼 매핑 요구 사항 정의 1. 회원은 일반 회원과 관리자로 구분해야 한다. 2. 회원 가입일과 수정일이 있어야 한다. 3. 회원을 설명할 수 있는 필드가 있어야 한다. 이 필드는 길이 제 한이 없다. import javax.persistence.*; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; @Entity public class Member { @Id private Long id; @Column(name = "name") private String username; private Integer age; @Enumerated(EnumType.STRING) private RoleType roleType; @Tem.. JPA 2022. 6. 14. [JPA] 플러시란? 플러시란? 플러시는 영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는것입니다. 데이터베이스가 커밋될때 플러시라는게 일어납니다. insert sql이나 delete sql이나 update sql이 DB에 날라가는것을 의미합니다. 영속성 컨텍스트의 변경사항을 DB에 날려주는것을 의미합니다. 플러시 발생 플러시 발생하면 무슨일이 생길까요? 다음 3가지 일이 벌어집니다. 1. 변경감지 2.수정된 엔티티 쓰기 지연 SQL저장소에 등록 3.쓰기지연 SQL 저장소의 쿼리를 데이터 베이스에 전송 ( 등록, 수정 ,삭제 쿼리) 영속성 컨텍스트를 플러시하는 방법 em.flush() - 직접 호출 트랜잭션 커밋 - 플러시 자동호출 JPQL 쿼리 실행 - 플러시 자동 호출 JPQL 쿼리 실행시 플러시가 자동으로 호출되는 이.. JPA 2022. 6. 13. 스프링 부트로 OAuth2 구현 (페이스북,구글,네이버) 모든 코드는 깃 저장소에 올려놨습니다 GitHub - jisu3316/Spring-Security: OAuth2 OAuth2 . Contribute to jisu3316/Spring-Security development by creating an account on GitHub. github.com OAuth란? OAuth(Open Authoriztion)는 토큰 기반의 인증 및 권한을 위한 표준 프로토콜입니다. OAuth와 같은 인증 프로토콜을 통해 유저의 정보를 페이스북, 구글, 네이버 등의 서비스에서 제공받을 수 있고 이정보를 기반으로 어플리케이션 사용자에게 로그인이나 다른 여러 기능을 손쉽게 제공 할 수 있습니다. 자세한 내용은 생활코딩님의 유튜브영상을 참조 하시면 좋을것같습니다. 스프링부트로 O.. Spring Boot 2022. 6. 6. [JPA] 영속성 컨텍스트 엔티티 매니저 팩토리 & 엔티티 매니저 영속성 컨텍스트에 대해 알아보기 전에 엔티티 매니저 팩토리와 엔티티 매니저에 대해서 알아보겠습니다. 엔티티 매니저 팩토리는 생성되는 시점에 DB 커넥션 풀을 생성해 둔 후, 요청이 들어올 때마다 엔티티 매니저를 생성합니다. 엔티티 매니저는 DB 연결이 필요한 시점( 보통 트랜잭션이 시작되는 경우)에 connection을 얻습니다. 일반 적인 웹 애플리케이션에서의 엔티티 매니저 팩토리와 엔티티 매니저 구동방식 엔티티 매니저 팩토리가 엔티티 매니저를 사용하는 이유 엔티티 매니저 팩토리 엔티티 매니저 생성 시점에 DB 커넥션 풀을 생성하는 등 생성 비용이 크기 때문에 DB 를 하나만 사용하는 어플리케이션이라면 일반적으로 하나만 만든다. 엔티티 매니저 팩토리를 이용해서 생.. JPA 2022. 5. 11. [programmers] 신고 결과 받기 문제설명 문제풀이 import java.util.*; class Solution { public int[] solution(String[] id_list, String[] report, int k) { int[] answer = new int[id_list.length]; //1. 중복제거 HashSet reportSet = new HashSet(); for (String rep: report) { reportSet.add(rep); } //2. notifyListHash만들기 HashMap notifyListHash = new HashMap(); for(String rep : reportSet) { int blank = rep.indexOf(" "); String reporter = rep.substr.. ps 2022. 5. 10. [programmers] 숫자 문자열과 영단어 문제풀이 class Solution { public int solution(String s) { int answer = 0; String str=""; String intStr=""; String result=""; for(int i =0;i ps 2022. 5. 10. [programmers] 신규 아이디 추천 https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 카카오 String 문제 중에서는 가장 쉽지 않을까라는 생각을 가지고 풀었습니다. 문제 설명도 잘 되어있고 단계별로 하나씩 조건만 맞춰주면서 풀면 어렵지 않게 풀어낼 수 있을 거라 생각합니다. 1단계 : 소문자로 치환 2단계 : 소문자, 숫자, 빼기(-), 마침표(.),밑줄(_) 제외한 나머지 제거 3단계 : 마침표(.)가 2번이상이면 하나로 바꿔주기 4.. ps 2022. 5. 10. [Java] String 클래스 메소드 정리 startWith 문자열이 지정한 문자로 시작하는지 판단 같으면 true반환 아니면 false를 반환한다.(대소문자구별) String str = "kosmo"; boolean startWith = false; startWith = str.startsWith("k"); System.out.println("startWith : "+startWith); 결과 값: true endWith 문자열 마지막에 지정한 문자가 있는지를 판단후 있으면 true, 없으면 false를 반환한다.(대소문자구별) String str = "김형수"; boolean endWith = false; endWith = str.endsWith("수"); System.out.println("endWith : "+endWith); 결과 값: .. Java 2022. 5. 10. [JPA] 단방향 연관관계 JPA 연관관계 중 단방향 연관관계에 대해서 알아보겠습니다. 1.연관관계가 필요한 이유 요구사항 - 회원과 팀이 있다. - 회원은 하나의 팀에만 소속될 수 있다. -회원과 팀은 다대일 관계이다. 객체 테이블에 맞추어 모델링(참조 대신 외래키를 그대로 사용) 아래는 회원과 팀 클래스 입니다. @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; ... } @Entity public class Team { @Id @GeneratedValue private Long id; pr.. JPA 2022. 5. 9. [programmers] 하샤드 수 하샤드 수 문제설명 문제를 보자마자 십의 자리수와 일의 자리수를 어떻게 나누지? 라는 생각을 했었던 것 같다. 내가 알고 있던것은 String 값만 substring으로 나누는것만 알아서 일단 String 으로 바꾸고 시작했던것 같다. class Solution { public boolean solution(int x) { boolean answer = true; String str = Integer.toString(x); String[] s =new String[str.length()]; int a=0; char c ; for(int i=0;i ps 2022. 5. 9. 상위 n개 레코드 내가 푼 결과 값은 두개다. 하나는 정렬한후 rownum으로 값을 구한것과 또 하나는 가장 작은 datetime을 구한 쿼리문이다. select NAME from (select rownum rnum, aa.* from (SELECT * FROM ANIMAL_INS ORDER BY DATETIME) aa) where rnum ps 2022. 5. 9. 이전 1 ··· 9 10 11 12 13 다음