Java

·개인공부
DB 테이블에서는 관계에서 방향의 개념이 존재하지 않다. DB 테이블에서는 특정 테이블을 기준으로 원하는 정보를 JOIN하여 조회하기 때문이다. 즉, DB 테이블에서는 테이블 사이의 연관관계를 FK(외래 키)로 맺을 수 있고 방향 상관없이 조회가 가능하다. 하지만, 객체에서는 다른 엔터티의 정보를 갖고있지 않다면 조회(참조)가 불가능하다. 이로인해 DB 테이블에서는 없는 단방향, 양방향와 같은 방향의 개념이 존재한다. 따라서 DB 테이블에 실제 칼럼으로 존재하지는 않지만 Entity 상태에서 다른 Entity를 참조하기 위해 방향을 설정한다. OverView - 연관관계 어노테이션 - @OneToOne - @ManyToOne - @OneToMany - @ManyToMany 연관관계 어노테이션 JPA 는 ..
·개인공부
JPA 어노테이션을 효과적으로 사용하는 방법을 아는 것은 애플리케이션에서 데이터베이스와의 상호작용을 최대한으로(아마도) 잘 활용하기 위해서는 필수적이라고 생각한다. 그리고 나는 이 작업을 잘하고 싶다. 그래서 이번 정리를 통해, JPA 어노테이션을 카테고리별로 나눠 정리함으로써, JPA 를 활용한 모델링을 더 잘 이해하고 활용할 수 있을 것이라고 기대한다. 객체와 테이블 매핑 어노테이션 객체(Entity)와 데이터 베이스의 Table 을 매핑 할 때에는 주로 다음과 같은 어노테이션이 사용된다. @EntityJPA 에서 테이블에 매핑할 클래스에 붙인다. 이 어노테이션이 붙은 클래스는 엔티티로 불린다.privaet 혹은 protected 인 기본 생성자(default constructor)를 반드시 작성해야..
·개인공부
개요나는 Spring 프로젝트를 만들어보면서 JPA 를 사용해 보았다.(정확히는 Spring Data JPA) 프로젝트에서 JPA 를 사용하면서, JPA 에 대한 기초적인 지식의 부족함을 느껴 이번 JPA 공부와 정리를 통해 올바른 JPA 를 사용할 수 있도록 노력해보고자 한다. JPA 에 관한 내용 정리는 공식 문서, 유튜브 영상, 인프런 강의, 책, 프로젝트를 진행하면서 알게된 내용을 참고하여 정리해볼 계획이다.내용 구성 - JPA 란 - JPA 특징 - Hibernate 설정 JPA 란JPA는 자바 개체와 관계형 DB 간의 맵핑 처리를 위한 API이며, ORM 스펙의 일부다.JPA는 2.2 버전까지는 Java Persistence API로 불렸으나, 3.0 버전부터는 Jakarta Persisten..
·개인공부
Background Knowledge(배경지식) API Note Optional is primarily intended for use as a method return type where there is a clear need to represent "no result," and where using null is likely to cause errors. A variable whose type is Optional should never itself be null; it should always point to an Optional instance. 메소드가 반환할 결과 값이 '없음'을 명백하게 표현할 필요가 있고, null 을 반환하면 에러가 발생할 가능성이 높은 상황에서 메소드의 반환 타입으로 Op..
·개인공부
나는 데이터를 저장 및 업데이트할 때, 각각의 메서드로 분리하여, JPA save() 메서드를 사용하였다. 그러다 어느날 다음과 같은 코드로직을 보게되었다. 1. findById 를 통해 AEntity를 조회, a변수 할당 2. 새로운 b변수에 a변수의 정보를 참조하여, new AEntity를 생성 3. b변수save() 나는 이 코드로직을 보고선, "AEntity 를 새로 생성하는구나" 라는 생각을 했다. 하지만 Hibernate 로그를 보았을 때는 "Insert가 아닌 Update 쿼리가 발생"하였다. 나는 의문이었다. "새로운 b변수에 new AEntity 를 생성했는데 어떻게 PK 중복 에러 없이, 업데이트가 발생했는가?" 궁금했다. 문제의 원인 이 답은, 김영한님의 자바 ORM 표준 JPA 프로..
·개인공부
Optional Optional은 Java 8부터 도입된 클래스로, 값의 존재 여부를 나타내는 래퍼 클래스이다. 이 클래스는 주로 값이 존재하지 않을 수 있는 상황(null)에서 null 대신 사용되어 코드의 안전성을 높이고 NPE예외를 방지한다. 따라서, Optional을 사용함으로써 코드를 더 명확하게 작성하고 예외 처리를 개선할 수 있다. Optional은 Java 8부터 도입된 클래스이며, Optional로 객체를 감싸서 사용한다면 null 체크를 직접하지 않아도 된다. null을 다룰 때 발생하는 NullPointerException을 방지하며, 명시적으로 해당 변수가 null 일 수 있다는 가능성을 표현할 수 있다. 사용법 Optional 을 사용하는 방법에는 크게 Optional 변수 선언하..
KEEMSY
'Java' 태그의 글 목록