목록전체 글 (124)
지나공 : 지식을 나누는 공간
여기서 알아볼 내용은, 값 타입 컬렉션 사용하는 예제 : 저장, 조회, 수정 등 값 타입 컬렉션 주의사항 실무에서의 사용법 팁 값 타입 컬렉션은 언제 쓰는지 JPA 타입 정리 문제상황 Member처럼 컬렉션을 가지면 1대 다 관계를 유지하지만 DB 테이블은 특성 상 한 객체가 컬렉션을 가지는 것을 구현하기 어렵다. 그래서 Member에 Favorite Food가 있다면 이걸 별도의 테이블로 보관해야 한다. 그래야 관리할 수 있다. 일단 매핑을 해보자. 값 타입 매핑은 @ElementCollection으로 해야 하고, 테이블명 정하는 건 CollectionTable에서 name을 통해 할 수 있다. MEMBER_ID를 가지고 JOIN하겠다는 의미이다. 값 타입 컬렉션 값 타입을 하나 이상 저장할 때 사용하..
www.hdmedi.co.kr/upp-self-test 어프 성격 시상식 - 회복탄력성 테스트 **2020 어프워드** 회복탄력성 테스트로 알아보는 나의 성격? www.hdmedi.co.kr 제 결과는 24시간이 모자라 상이네요ㅎㅎ 귀여운 결과 만족스럽습니다 ㅋㅋㅋㅋㅋ
(JPA7에 이어지는 내용) 이번에 알아볼 내용은, 값 타입의 공유 참조와 그 부작용 공유 참조 시 부작용 피하기 객체 타입의 한계 불변 객체 값 타입의 비교 값 타입 공유 참조 임베디드 타입과 같은 값 타입을 여러 엔티티에서 공유하면 위험하다. (부작용 발생) 부작용 주의! Address address = new Address("city","street","10000"); //member1 생성 Member member1 = new Member(); member1.setAddress(address); em.persist(member1); //member2 생성 Member member2 = new Member(); member2.setAddress(address); em.persist(member2);..
이번에 알아볼 내용은, 기본값 타입과 값 타입의 분류 임베디드 타입(복합 값 타입) - > 중요 임베디드 타입의 활용 임베디드 타입의 중복 해결 임베디드 타입과 null JPA의 데이터 타입 분류 [엔티티 타입] Entity로 정의하는 객체 내부 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 이름, 나이를 변경해도 id100번이면 id를 보고 이 엔티티를 인식할 수 있다. [값 타입] int, Integer, String 같은 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없이 값만 있으므로 변경되면 추적 불가능 값 타입의 분류 임베디드 타입 : X좌표, Y좌표를 한 번에 사용하고자 묶어서 '위치'로 사용하고 싶을 때 사용. 컬렉션 값 타입 : 임베디드 타입이나 값 타입을 자..
이번 포스팅에서 공부할 내용은! ->영속성 전이 (CASCADE) : 정의, 주의점, 종류 ->고아 객체 : 정의, 주의 -> (영속성 전이 + 고아 객체)와 생명주기 영속성 전이란? (CASCADE) 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶은 경우에 사용합니다. 예를 들어 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장하거나, 부모 엔티티를 삭제할 때 관련된 자식엔티티도 함께 삭제하고 싶을 때 사용합니다. 영속성 전이 : 저장 (PERSIST) 아래의 예시를 봅시다. 현재 Parent와 Child는 1:N 연관관계 (@OneToMany, @ManyToOne 사용)를 가진 상태입니다. public class JpaMain(){ public static void m..
이번 포스팅에서 공부할 것은, 프록시 들어가기 프록시의 개념과 특징 프록시 확인하기 즉시로딩(EAGER)과 지연로딩(LAZY) N+1의 문제 들어가기 Team 과 Member가 1:N으로 매핑될 때를 생각해보자. member를 가져올 때 연관관계가 있다고 해서 항상 team도 가져온다면, 최적화가 되지 않은 상황이 될 것이다. 하지만 언젠가 member를 가져오면서 그 멤버가 속한 team의 정보도 사용해야 할 때도 있을 것이다. 이 경우에는 한 번에 둘 다 가져와야 하고, 또 가져오려니 항상 가져오면 낭비가 심하고. 이 부분에 대한 JPA의 해결을 오늘 공부할 예정이다. 프록시란? 먼저, em.find() vs em.getReference() 에 대하여 find()는 데이터베이스를 통해 실제 엔티티를 ..
탐색(Search)? DFS/BFS? -> 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정이 탐색 -> 탐색의 대표적인 예로 그래프 탐색 알고리즘은 DFS와 BFS가 있다. 이번 포스팅에서 알아볼 것 스택의 자료구조와 구현 큐의 자료구조와 구현 재귀함수(의미, 구현, 팩토리얼 구현으로 알아보는 재귀함수) 유클리드 호제법 with 재귀함수 DFS 동작과 구현 BFS 동작과 구현 스택(Stack) -> 마지막에 들어간 데이터가 먼저 빠져나오는 구조 -> LIFO (Last In First Out) 스택코드 구현 삽입(5) -> 삽입(2) -> 삽입(3) -> 삽입(7) -> 삭제() -> 삽입(1) -> 삽입(4) -> 삭제() 큐(Queue) -> 처음에 들어간 데이터가 먼저 빠져나오는 구조 -> FI..
필수 어노테이션정리 @Entity -> JPA를 사용해서 데이터베이스의 테이블과 매핑할 클래스에 필수로 명시해야 하는 어노테이션 제약사항 1. 파라미터가 없는 protected나 public의 기본생성자가 필수로 있어야 함 (Entity를 JpaRepository에서 가져올 때 기본생성자를 사용하므로) 2. 필드에 final 클래스, enum, interface, inner 클래스를 사용할 수 없음 속성 name : 엔티티 이름을 지정하는 속성, 기본값은 클래스이름 @Table -> 해당 엔티티와 매핑할 테이블을 지정하는 어노테이션 속성 name : 매핑할 테이블 이름을 지정, 기본값은 엔티티 이름 (아래 사진에서 ORDERS라고 지정했지만 안 써도 테이블명이 ORDERS다.) catalog : 데이터베..
이것이 코딩테스트다. chapter 4 구현 실전 문제 풀이 구현 문제는 어떤 문제? 머릿 속에 있는 알고리즘을 소스코드로 바꾸는 과정으로, 어떤 문제든 간에 해당이 될 수 있는 매우 넓은 범위의 유형이다. 구현 문제를 풀 때 생각할 점들 - 파이썬 기준 1초에 2000만 번의 연산 수행을 가정할 때 크게 무리가 없음 - 시간제한이 1초이고, 데이터 개수가 100만 개인 문제에서 N= 1,000,000이면 시간복잡도가 NlogN=20,000,000이므로 이정도의 데이터를 혀용한다고 생각하고 문제를 풀면 무리가 없을 것임 이제, 문제를 풀어보자. 1. 상하좌우 문제 문제) 여행가 A는 N*N의 크기의 정사각형 공간 위에 서 있다. 이 공간은 1*1 크기의 정사각형으로 나누어져 있다. 가장 왼 쪽 위 좌표는..
JPA의 기능에는 데이터베이스 스키마 자동생성 기능이 있다. 이는 DDL을 어플리케이션 실행 시점에 자동으로 생성해주는 기능이다. 테이블 중심에서 객체 중심으로 코딩이 가능하게 하는 기능이고, 데이터베이스 dialect에 따라 적절하게 DDL을 생성한다. 예를 들어 MySql이냐 Oracle이냐에 따라 varchar인지 varchar2인지가 달라진다. dialect에 따라 맞게 DDL을 생성한다. 그리고 이렇게 생성된 DDL은 개발 장비에서만 사용하고, 운영 서버에서는 사용하지 않거나 적절히 다듬어 쓴다. 사용법은 resources - META-INF - persistence.xml에서 hibernate.hbm2ddl.auto의 옵션을 설정하면 된다. - create : 기존 테이블을 삭제한 뒤 다시 생..