전체 글

전체 글

    JPA 연관관계 매핑 기초

    JPA 연관관계 매핑 기초

    엔티티는 다른 엔티티와 연관관계가 대부분 있다. 그럴 경우 어떻게 표현할까? 단방향과 양방향이 있다. 회원 → 팀 ( 회원은 팀을 참조한다 ) 팀 → 회원 ( 팀은 회원을 참조한다 ) 위의 두 가지 관계에서 하나만 성립하는 경우 단방향 관계, 두 가지 관계 모두 참조하면 양방향 관계라고 한다. 단방향 연관관계 객체 연관관계에서는 단방향 관계이기에 member → team 조회는 가능하지만 반대의 경우는 할 수 없다. 그래서 Member.team필드를 통해서 팀을 알 수 있지만, 반대로 팀은 회원을 알 수 없다. 테이블 연관관계에서는 양방향 관계이기에 양 쪽 조회가 가능하다. MEMBER 테이블의 TEAM_ID 외래키로 MEMBER JOIN TEAM 과 TEAM JOIN MEMBER 둘 다 가능하다. 객체..

    [백준] 1712번 - Java(자바)

    [백준] 1712번 - Java(자바)

    백준 1712번 자바 https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 문제 내용은 아래 더보기를 누르면 나온다. 더보기 알고리즘 A = 고정 비용 B = 가변 비용 C = 노트북 가격 손익분기점 : 총 수입(판매비용) > 총 비용(A + B) 노트북을 얼마나 팔아서 손익분기점을 넘기는지 구하시오. (A, B, C는 21억 이하 자연수) 손익분기점이 나오지않으면 -1 출력해야한다. 여기서 우리는 손익분기점에 대해 생각해야한다. A + B * 판매대수 ..

    [백준] 1316번 - Java(자바)

    [백준] 1316번 - Java(자바)

    백준 1316번 자바 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 문제 내용은 아래 더보기를 누르면 나온다. 더보기 알고리즘 단어에서 각 문자가 연속해서 나타나는 경우 그룹 단어라고 한다. (e.g. 그룹 단어 : ccazzzzbb , kin, abc , 그룹 단어 아닌 것 : abca, aabbbccb. ) 앞에 나왔던 문자가 뒤에도 나오면 그룹 단어가 아닌 것이다. 알파벳은 소문자로만 되어있고, 중복되지 ..

    [백준] 2941번 - Java(자바)

    [백준] 2941번 - Java(자바)

    백준 2941번 자바 https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 문제 내용은 아래 더보기를 누르면 나온다. 더보기 알고리즘 크로아티아 알파벳을 제외한 알파벳들은 1글자씩 센다. 주어진 단어가 크로아티아 알파벳으로 몇 글자인지 출력하면 된다. 이것도 전에 풀었던 5622번 문제처럼 풀면 되겠다. 1. 단어를 입력받는다. 2. 단어를 byte[] 로 변환한다. 3. 숫자를 셀 count를 만든다. 4. 단..

    [백준] 5622번 - Java(자바)

    [백준] 5622번 - Java(자바)

    백준 5622번 자바 https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 문제 내용은 아래 더보기를 누르면 나온다. 더보기 알고리즘 알파벳 대문자로 이루어진 단어를 받는다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. 알파벳 매칭되는 다이얼 번호는 다음과 같다. 2 = A, B, C 3 = D, E, F 4 = G, H ,I 5 = J, K ,L 6 = M, N ,O 7 = P, Q, R, S 8 = T, U ,V 9 = W, X, Y, Z 숫자 1은 2초, 숫자 2는 3초가 걸리므로 알파벳에 매칭되는 다이얼 번호에 ..

    JPA 기본키 매핑

    JPA 기본키 매핑

    기본키(primary key) 매핑하는 방법은 2가지로 직접 할당과 자동 생성이 있다. 직접 할당은 엔티티에 @Id 어노테이션만 사용해서 직접 할당한 것이다. 자동 생성은 엔티티에 @Id와 @GeneratiedValue를 추가하고 원하는 키 생성 전략을 선택하면 된다. 위 사진처럼 빨간색 부분만 작성하면 직접 할당, 노란색 부분 전체를 작성하면 자동 생성인 것이다. 자동 생성같은 경우에는 MySQL의 AUTO_INCREMENT 같은 기능으로 생성된 값을 기본키로 사용하는 것이다. (e.g. 1씩 증가하는 숫자값) 직접 할당 기본키를 애플리케이션에서 직접 할당한다. 자동 생성 대리키 사용 방식이다. IDENTITY : 기본키 생성을 DB에 위임한다. SEQUENCE : DB 시퀀스를 사용해서 기본키를 할당..

    JPA 필드와 컬럼 매핑

    JPA 필드와 컬럼 매핑

    📝 필드와 컬럼 매핑 종류 @Column : 컬럼을 매핑 @Enumerated : 자바의 enum 타입을 매핑 @Temporal : 날짜 타입을 매핑 @Lob : BLOB, CLOB 타입을 매핑 @Transient : 특정 필드를 DB에 매핑하지 않음 🧐 @Column 은 무엇인가? 객체 필드를 테이블 컬럼에 매핑하는 어노테이션이다. @Column 속성 name : 필드와 매핑할 테이블의 컬럼 이름. 기본값은 객체의 필드 이름 @Column(name = "name") private String username; //생성된 DDL create table 테이블명 ( name varchar(255) not null, ... ) insertable : 엔티티 저장 시 이 필드도 같이 저장. 기본값은 true...

    Map 인터페이스

    Map 인터페이스

    🧐 Map Interface란? Map 인터페이스는 키(key)와 값(value)을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스를 구현하는데 사용된다. 키는 중복될 수 없지만 값은 중복을 허용한다. 만약 중복된 키와 값을 저장한다면 기존의 값은 없어지고, 저장된 값이 남는다. 📝 Map의 대표적인 메서드 Map을 사용해서 출력할 때 보통 entrySet() 또는 keySet()메서드를 활용하여 Map의 객체를 반환받아 출력한다. entrySet()은 key와 valeu 모두 필요할 경우 사용한다. keySet()은 key 값만 필요할 경우 사용하는데 key값을 받고 get(key)를 활용하여 value도 출력할 수 있다. 이럴 경우 key를 찾고 value를 찾는 과정에서 시간이 많이 소요되므로 많은 양..