JPA - 엔티티 매핑

JPA - 엔티티 매핑 JPA를 사용할 때 엔티티와 테이블을 정확하게 매핑하는 것이 가장 중요하다. JPA는 매핑 어노테이션을 지원하는데 아래와 같이 크게 4가지로 분류할 수 있다. 객체와 테이블 매핑 기본키 매핑 필드와 컬럼 매핑 연관관계 매핑 위의 분류를 이제 차근차근 정리해보자. 1. @Entity JPA를 사용해서 테이블과 매핑할 클래스에는 @Entity 어노테이션을 붙인다. @Entity가 붙은 클래스는 JPA가 관리하는 것으로 엔티티라 부른다. 1.1 속성 name : JPA와 사용할 엔티티 이름을 지정, 사용하지 않을 경우 클래스이름이 그대로 적용 1.2 주의사항 ...

더보기

JPA - 영속성 관리

JPA - 영속성 관리 1. 영속성 컨텍스트 기본 개념 영속성 컨텍스트(Persistence Context)란 “엔티티를 영구 저장하는 환경”이라는 뜻이다. 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에서 엔티티를 보관하고 관리한다. persist()메서드는 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다. 2. 엔티티 생명주기 엔티티에는 4가지 상태가 존재하며 생명주기는 아래의 그림과 같다. 비영속(new/transient) : 영속성 컨텍스트와 관계가 없는 상태 영속(managed) : 영속성 컨텍스트에 저장된 상태 준영속(detach...

더보기

JPA - 프로젝트 생성 및 설정

1. JPA 프로젝트 생성 및 설정 1.1 프로젝트 생성 IntelliJ에서 maven 프로젝트를 생성하고 pom.xml을 아래와 같이 작성해준다. <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4....

더보기

JPA - JPA Introduction

1. JPA 기본 개념 JPA는 자바 진영의 ORM 기술 표준으로 애플리케이션과 JDBC 사이에서 작동한다. 여기서 ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. 자바 애플리케이션 --- JPA -- JDBC <-----> DB ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 해결해준다. 객체를 데이터베이스에 저장할 때 INSERT SQL을 직접 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 된다. 그러면 ORM 프레임워크가 적절한 INSERT SQL을 생성해 데이터베이스에 객...

더보기

Git - Commit Message Convention

커밋 메시지를 작성할 때는 원칙을 정하고 일관성 있게 작성해야 한다. 아래는 유다시티의 커밋 메시지 스타일 가이드를 참조한 내용이다. 1. Commit Message Structure 기본적으로 커밋 메시지는 아래와 같이 제목/본문/꼬리말로 구성한다. type : subject body footer 2. Commit Type feat : 새로운 기능 추가 fix : 버그 수정 docs : 문서 수정 style : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우 refactor : 코드 리펙토링 test : 테스트 코드, 리펙토링 테스트 코드 추가 chore : 빌드 업무...

더보기

자료구조 - Ternary Search Tree

1. Trie와 TST(Ternary Search Tree) 비교 및 특징 Trie는 탐색, 정렬에 매우 효율적이지만 메모리를 많이 사용하는 문제가 있다. TST는 Trie에 비해 적은 reference와 null object를 가진다. Trie와 마찬가지로 TST도 노드에 문자열을 저장한다. TST는 각 노드마다 3개의 하위노드를 가진다. less : lower child equal : middle child greater : higher child 해시맵 만큼 효율적이다. 해싱은 전체 문자열의 키를 탐색해야하지만 TST는 그렇지...

더보기

자료구조 - Trie

1. HashMap 장단점 1.1 장점 HashMap은 매우 효율적인 자료구조로 중요한 연산(삽입, 탐색)들에 O(1) 시간복잡도를 가진다. 1.2 단점 HashMap은 정렬을 지원하지 않는다. Hash함수는 왼벽하지 않기 때문에 충돌이 발생하게 된다. 위의 단점을 보완할 수 있는 자료구조는 Trie로 HashMap에서 발생하는 충돌을 제거하고, 정렬을 지원한다. 2. Trie 기본 개념 Tire / Radix Tree / Prefix Tree 라고 부른다. 배열을 통해 자료구조를 구현할 수 있다. key는 일반적으로 문자열(String)이다. 노드의 모든 하위 항목에...

더보기

우분투 & 윈도우 듀얼 부팅시 세팅해야할 것들

1. 우분투 & 윈도우 듀얼 부팅 시간 설정 우분투 윈도우 듀얼부팅 환경으로 설정하고, 윈도우로 부팅하면 시간이 맞지 않는 경우가 발생할 경우 아래와 같이 설정해준다. 1.1 해결 방법 timedatectl set-local-rtc 1 sudo gedit /etc/default/rcS UTC=no 출처 : https://tuwlab.com/ece/28472 2. 우분투 & 윈도우 듀얼부팅 순서 변경하기 2.1 grub 설정파일 편집 sudo gedit /etc/default/grub 2.2 수정 GRUB_DEFAULT=0 값을 변경, 보통 4번의 윈도우가 위치하기 때...

더보기