본문 바로가기

분류 전체보기

(340)
[JPA] 지연로딩과 영속성전이 JPA 연관관계 관리 비즈니스로직을 분석해보니, 대부분의 로직에선 엔티티 A만 필요했다. 이런 상황에서, 엔티티 A에 연관되어있는 엔티티 B까지 같이 메모리에 올리는것은 비 효율적이며, 성능또한 느리게 한다. JPA는 즉시로딩과 지연로딩이라는 기법을 통해, 연관 엔티티의 로딩시점을 정할수있도록 해준다. JPA 프록시 지연로딩을 이해하기위해선, 하이버네이트에서 제공하는 프록시를 이해해야한다. public void 테스트1(){ EntityA entityA = em.getReference(EntityA.class,"e1"); } public void 테스트2(){ EntityA entity1 = em.find(EntityA.class, "e1"); EntityA entity2 = em.getReference..
[Java] Java Heap Stack Static 프로세스 와 스레드 자바의 메모리 구조를 이해하기위해선, 우선 프로세스와 스레드의 차이를 알아야한다. 프로세스 프로세스는 운영체제에서 할당받는 하나의 공간으로 각각의 프로세스는 독립적인 자원을 갖고있다. (하나의 응용프로그램이라고 생각해도 된다.) 각 프로세스는 운영체제로 부터 아래의 독립적인 공간을 제공받는다. - CPU시간 - 메모리 주소 - Stack, Heap, Code, Data... 스레드 스레드는 프로세스의 실행단위이다. 모든 프로세스는 하나의 메인 스레드를 갖고있으며, 프로세스내의 동작은 스레드를 통해서 이루어진다. 하나의 프로세스는 여러개의 스레드를 만들수 있으며, 아래와 같은 특징을 갖고있다. - 스레드는 독립적인 Stack 영역을 갖고있다. - 스레드는 Stack영역을 제외한 프로세스..
[백준 / BOJ] 2533 사회망 서비스(SNS) 문제 출처 : https://www.acmicpc.net/problem/2533 2533번: 사회망 서비스(SNS) 페이스북, 트위터, 카카오톡과 같은 사회망 서비스(SNS)가 널리 사용됨에 따라, 사회망을 통하여 사람들이 어떻게 새로운 아이디어를 받아들이게 되는가를 이해하는 문제가 중요해졌다. 사회망 www.acmicpc.net N명의 친구들이 서로 트리 형태로 연결되어있다. 친구들은 자신의 친구들이 모두 얼리어답터 일때, 자신도 얼리어답터가 된다. 이때, 모든 친구를 얼리어답터를 만들기위해 필요한 초기 얼리어답터 수를 구하는 문제다. 풀이 다이나믹 프로그래밍으로 푼 문제다. 트리에서의 DP의 전형적인? 유형으로 DP로 풀리는것을 떠올리는것이 문제였다. 아이디어 트리의 현재 노드에 할수있는 연산은 두 ..
[티스토리 스킨] blue2D 티스토리 스킨 공유 (스킨 예시는 현재 블로그입니다.) 2022-12-16일 부로 다른 스킨으로 변경하게 되었습니다. 개인 맞춤형으로 만들어서 확장성이 안좋아요. 사용하실분은 아래글을 잘 읽어주세요 :) * html파일과 css에 주석을 안 지우고 배포해서 수정위치 찾기는 어렵지 않을겁니다 * html,css 는 몇번 끄적여본게 전부인 사람이 만든 스킨입니다. 반응형을 고려하여 만들었으나, 이상한 버그가 있을 수 있어요 - 스킨 다운및 적용 1. 아래 링크에 들어갑니다. (스타 눌러주시면 감사합니다) https://github.com/devxb/blue2DTistorySkin GitHub - devxb/blue2DTistorySkin: 티스토리 심플 스킨입니다. 티스토리 심플 스킨입니다. Contribu..
[JPA] 고급 매핑 - 상속 관계, 복합키와 식별 관계 1. 상속관계 매핑 많이 사용되는 상속관계 매핑에는 3가지 종류가 있다. - 조인 전략 - 단일 테이블 전략 - 자식 테이블에게 매핑 정보만 제공 - 조인 전략 조인 전략은 엔티티 각각을 테이블로 만들고 자식 엔티티가 부모 엔티티의 기본키를 받아서 기본키 + 외래키로 이용하는 전략이다. 테이블을 조회할때, Join을 이용해 상속관계를 표현한다. @Entity @Inheritance(startegy = InheritanceType.JOINED) @DiscriminatorColumn(name = "DTYPE") public class Entity1{ @ID @GeneratedValue @Column(name = "ENTITY_1_ID") private Long id; } @Entity @Discriminat..
[백준 / BOJ] 17471 게리맨더링 문제 출처 : https://www.acmicpc.net/problem/17471 17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net N개의 선거구와 각 선거구에 사는 인원수가 주어진다. 선거구는 2개의 선거진영으로 나뉘며, 이때, 각 선거진영 선거진영 별로 모두 연결되어있어야한다. 이때, 선거진영의 인구수 차이를 최소화하는 값을 구하는 문제다. 풀이 비트마스킹을 이용한 완전탐색으로 푼 문제다. 처음엔 비트마스킹 + 백 트래킹으로 생각했으나, 이 방법으로는 모든 경우를 봐주지 못해서 풀기 힘들어 보였다. 알고리즘은 다음과 같다. 1. ..
[JPA] 연관관계 매핑 연관관계 매핑 1. @OneToMany, @ManyToOne @OneToMany와 @ManyToOne은 이름 그대로, 일대다, 다대일 연관관계를 정의한다. 우선 단방향 연관관계 매핑과 양방향 연관관계 매핑 코드를 살펴보자. /* 단방향 연관관계 매핑 */ @Entity public class A{ @Column(name=B) @ManyToOne @JoinColumn(name="B_ID") private B b; } @Entity public class B{ @Id @Column(name="B_ID") private Long bId; } 1. 연관관계 매핑 어노테이션인 @ManyToOne, @OneToMany...은 자신의 상태를 앞에 작성한다. 따라서, 위 코드에서는 A가 Many, B가 1에 해당한다...
[JPA] 필드와 컬럼 매핑 필드와 컬럼 매핑 객체의 필드와 데이터베이스의 컬럼을 매핑하는 방법에 대해 알아보겠다. 1. @Column 객체필드를 테이블 컬럼에 매핑한다 주요 속성들 - name = String -> 테이블 컬럼에 매핑될때의 이름을 정의한다. - nullable = boolean -> null값 허용 여부를 선택한다 - unique = boolean -> 한 컬럼에 유니크 제약조건을 걸때 사용한다. - length = int -> String값에만 사용하며, 최대 길이를 설정한다. 예시 @Entity @Table(name = "USER") public class User extends CommonDate{ @Id @GeneratedValue @Column(name = "ID") private Long id; @Col..