전체 글 464

영속성 컨텍스트

영속성 컨텍스트란? 엔티티를 영구저장하는 환경이다. 어플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. Entity Manager를 통해 엔티티를 저장하거나 조회하면 Entity Manager는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. Entity의 생명주기 비영속 (new / transient) : 영속성 컨텍스트와 관계가 전혀 없음 영속(managed) : 영속성 컨텍스트에 저장된 상태 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 (removed) : 삭제된 상태 [비영속] Member member = new Member("David") 영속성 컨테스트와 관계가 전혀 없음 [영속] Member member = new Memb..

JPA - N대 1 연관관계

먼저 테이블 관계를 봐보자 user와 user_history의 관계는 1:N이다. user에는 회원정보가 저장되어있고, userhistory에는 특정 user의 정보 변경 내용이 담겨져있다. (ex : 이름, 이메일 주소 등) user와 user_history Entity를 봐보자 [User] public class User extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Enumerated(value = EnumType.STRING) private Gender gender; @NonNull private String name; @NonNull private String email; ..

백준 1719번 택배 (C++)

문제 링크 : https://www.acmicpc.net/problem/1719 1719번: 택배 명우기업은 2008년부터 택배 사업을 새로이 시작하기로 하였다. 우선 택배 화물을 모아서 처리하는 집하장을 몇 개 마련했지만, 택배 화물이 각 집하장들 사이를 오갈 때 어떤 경로를 거쳐야 하 www.acmicpc.net 문제 요약 1. 두 수 n과 m이 주어집니다. 2. n은 집하장의 개수 (200이하 자연수) 이며, m은 집하장간 경로의 개수 (1000이하 자연수) 입니다. 집하장간 경로의 소요 시간은 모두 1000이하의 자연수 입니다. 3. 1번부터 n번까지, 한 집하장에서 다른 집하장으로 최단 경로로 화물을 이동시키기 위해 가장 먼저 거쳐야 하는 집하장을 출력하세요. 핵심 포인트 우선 다익스트라의 개념..

프로그래머스 n진수 게임 (C++)

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/17687 코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0 programmers.co.kr 문제 요약 1. 숫자를 0부터 시작해서 차례대로 말한다. 첫 번쨰 사람은 0, 두 번째 사람은 1, ... 열 번째 사람은 9를 말한다. 2. 10이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉, 열 한번째 사람은 10의 첫 자리인 1, 열 두 번째 사람은 둘째자리인 0을 말한다. 3. 게임의 난이도를 높이기 위해 각 숫자는 n진법..

Entity, DTO, 그리고 DAO

핵심 요약 [ Entity ] DB 테이블과 매핑되는 클래스 -> @Entity, @Column, @Id 등을 이용 DB 테이블 내에 존재하는 컬럼만을 속성(필드)으로 가져야 한다. 즉, 테이블의 컬럼 == Entity의 필드이다. Entity는 상속을 받거나 구현체이면 안된다. [ Entity 코드 예시 ] import javax.persistence.*; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) privae Long id; @Column(nullable = false) private String name; @Column(nullable = false) private String email; @..

Entity의 Listener

요약 Annotation Description @PrePersist insert 메소드가 호출되기 전에 실행 @PreUpdate merge 메소드가 호출되기 전에 실행 @PreRemove Delete 메소드가 호출되기 전에 실행 @PostPersist Persist 메소드가 호출된 이후에 실행 @PostUpdate Merge 메소드가 호출된 이후에 실행 @PostRemove Delete 메소드가 호출된 이후에 실행 @PostLoad Select 조회가 실행된 직후에 실행 [사용 예시] // User.java @PrePersist public void prePersist(){ System.out.println(">>>>> prePersist"); } @PostPersist public void postPe..

Entity의 기본 속성(annotation)

요약 Annotation Description @Entity 해당 객체는 JPA에서 관리한다고 선언. 단, Primary Key는 필수이다. @Table Table을 만든다. Data Migration을 할 때 Table 이름을 추가적으로 설정해서 사용한다. @Column 각 필드의 속성을 지정한다. @Transient DB에 해당 값이 반영되지 않는다. @Enumerated Java의 enum 타입을 엔티티 클래스의 속성으로 사용할 수 있다. @Entity 해당 객체는 JPA에서 관리함을 선언한다. 이때 PK(Primary Key)가 반드시 수반된다. [사용 예시] @Entity public class User { @Id // Primary Key @GeneratedValue // 아무것도 입력안하면 ..

Pageable과 Page Request

먼저 Paging이란? DB에 저장된 Entity들을 페이지로 나누는 것이다. 예를 들어 DB에 21개의 게시판 글이 작성되었다고 가정하자. 프론트에서 "DB에 있는 게시판을 5개씩 분류해서, 두 번째 파트를 줘!"라고 요청한다. 그러면 백엔드에서는 5개씩 분류하고, 분로된 게시판들의 두 번째 파트를 프론트에 넘겨준다. 위 상황과 같이, 일정 갯수만큼 분류하고 분류된 부분들 중 어떠한 부분을 보내주는 것이 Paging이다. Paging은 왜 필요할까? Paging은 Sort(정렬)의 개념을 갖고있다. 예컨데 DB 수가 적다면 List 형식으로 DB 전체목록을 가져와 쿼리메소드로 정렬을 하건, 원하는 부분만 sortging을 하건 성능의 큰 차이는 없을 것이다. 하지만 실제 서비스가 가지고 있는 기능들이 ..

백준 14938번 서강그라운드 (C++)

문제 링크 : https://www.acmicpc.net/problem/14938 14938번: 서강그라운드 예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을 www.acmicpc.net 문제 요약 1. 첫째줄에 지역의 개수 n (1 c; map[a].push_back({b,c}); map[b].push_back({a,c}); } for(int i=1; i> m >> r; for(int i=1; i> items[i]; for(int i=0; i> a >> b >> c; map[a].push_back({b,c}); map[b].push_back({a,c}); } (2) 1번..

프로그래머스 직업군 추천하기 (C++)

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/84325# 코딩테스트 연습 - 4주차 개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부 programmers.co.kr 문제 요약 (문제 링크에는 각 벡터의 도표와 함께 설명이 디테일하게 나와있으므로, 문제 링크를 통해 자세히 보는 것을 추천합니다.) 1. vector에는 직군별 선호 언어가 나열되어있다. 맨 첫번째 단어는 직군의 명칭이며, 공백을 기준으로 선호 언어가 나열된다. 선호 언어는 5점에서 1점순으로 나열된다. 2. vector languages와 ve..