본문 바로가기

분류 전체보기846

JPA Entity 기본 생성자 JPA는 인수없는 기본 생성자가 존재해야 한다. JPA에서는 public 또는 protected로 정의해야 한다. JPA는 DB 값을 객체 필드에 주입할 때 기본 생성자로 객체를 생성하고, Reflection을 사용하여 값을 매핑한다. 만약 private 생성자를 만들게 되면 지연 로딩으로 인해 생성된 프록시 객체를 사용하는데 제약이 생긴다. 그래서 Entity에는 public, protected scope를 가진 기본 생성자가 필요하다. 2023. 9. 29.
기본 키 할당 전략 기본 키 할당 전략 JPA가 제공하는 DB 기본 키 할당 전략은 직접 할당 방식, 자동 생성 방식 두 가지가 존재한다. 직접 할당 방식은 기본 키를 애플리케이션에서 직접 할당하는 방식으로 @Id 어노테이션만 붙이고, id 값을 직접 할당하면 된다. 자동 생성 방식은 데이터베이스에서 제공하는 대리키를 사용하는 방식이다. 총 3가지 방식이 존재한다. Identity Sequence Table Identity 전략 Identity 전략은 기본 키 관리를 DB에 위임한다. 엔티티가 영속 상태가 되려면 식별자가 반드시 필요하다. Identity 전략은 엔티티를 데이터베이스에 저장해야 식별자를 얻을 수 있다. 즉, 저장하는 순간 Insert SQL이 DB에 전달되어 쓰기 지연이 동작하지 않는다. 또한 기본 키는 n.. 2023. 9. 29.
Wrapper Type vs Primitive Type In JPA Wrapper Type vs Primitive Type In JPA Primitive Type 자바의 기본 자료형으로 int, long, boolean, char, short, byte, double, float 자료형이 존재한다. 특징으로 기본값으로 0이 들어가게 된다. 기본 데이터 타입으로 크기가 고정되어 있다. Wrapper Type 기본 자료형을 객체로 다루기 위한 클래스이다. 즉, 객체로 래핑하여, 객체 지향 적인 기능을 활용 할 수 있다. JPA Entity Field Type @Entity public class Member{ @Id Long id; } 여기서 Long 타입과 long 타입으로 선언하는 방법이 있다. Long 타입을 선언해도, long 타입을 선언해도 동일하게 동작한다. 하지.. 2023. 9. 29.
JPA JPA란? Java Persistence API의 약어로, 자바 ORM 기술에 대한 API 표준 명세이다. 쉽게 이야기해서 인터페이스를 모아둔 것이다. JPA를 사용하려면 JPA를 구현한 ORM 프레임워크를 선택해야 하는데, 기본값으로 하이버네이트 프레임워크를 사용한다. JPA를 쓰는 이유 JPA를 사용하면 객체지향 프로그래밍과 관계형 데이터베이스 간의 패러다임 불일치를 해결 할 수 있다. 또한, JPA를 통해 데이터베이스와의 상호작용을 편리하게 만들 수 있다. 개발자는 SQL 쿼리를 직접 작성하는 번거로움을 줄이고, POJO 기반 모델을 적용하여 객체 지향적인 코드를 작성할 수 있다. JPA 단점 복잡한 SQL은 생성하지 못할 때도 있고, 직접 SQL을 호출하는 것보다 성능이 낮을 수 도 있다. 엔티티.. 2023. 9. 20.
백준 3085 3085번: 사탕 게임 문제 상근이는 어렸을 적에 "봄보니 (Bomboni)" 게임을 즐겨했다. 가장 처음에 N×N크기에 사탕을 채워 놓는다. 사탕의 색은 모두 같지 않을 수도 있다. 상근이는 사탕의 색이 다른 인접한 두 칸을 고른다. 그 다음 고른 칸에 들어있는 사탕을 서로 교환한다. 이제, 모두 같은 색으로 이루어져 있는 가장 긴 연속 부분(행 또는 열)을 고른 다음 그 사탕을 모두 먹는다. 사탕이 채워진 상태가 주어졌을 때, 상근이가 먹을 수 있는 사탕의 최대 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 보드의 크기 N이 주어진다. (3 ≤ N ≤ 50) 다음 N개 줄에는 보드에 채워져 있는 사탕의 색상이 주어진다. 빨간색은 C, 파란색은 P, 초록색은 Z, 노란색은 Y로 주어진다. 사탕의.. 2023. 9. 18.
백준 17484 17484번: 진우의 달 여행 (Small) 문제 우주비행이 꿈이였던 진우는 음식점 '매일매일싱싱'에서 열심히 일한 결과 달 여행에 필요한 자금을 모두 마련하였다! 지구와 우주사이는 N X M 행렬로 나타낼 수 있으며 각 원소의 값은 우주선이 그 공간을 지날 때 소모되는 연료의 양이다. 진우는 여행경비를 아끼기 위해 조금 특이한 우주선을 선택하였다. 진우가 선택한 우주선의 특징은 아래와 같다. 1. 지구 -> 달로 가는 경우 우주선이 움직일 수 있는 방향은 아래와 같다. 2. 우주선은 전에 움직인 방향으로 움직일 수 없다. 즉, 같은 방향으로 두번 연속으로 움직일 수 없다. 진우의 목표는 연료를 최대한 아끼며 지구의 어느위치에서든 출발하여 달의 어느위치든 착륙하는 것이다. 최대한 돈을 아끼고 살아서 달에.. 2023. 9. 16.