Dev/JPA 16

JPA 에서 연관관계의 정의

12월동안 JPA 강의를 수강하고 개인 프로젝트에 적용해보면서 가장 힘들었던 내용이다. 까먹기전에 수업들었던 내용을 간략하게 정리하려고 한다. 사실 강의를 한번들어서 연관관계를 파악하기에는 쉽지 않았다. 역시 직접해보는게 최고다. 개인 프로젝트 적용할 때 속도는 느렸지만 도움이 많이 되었기 때문에 혹시 이 개념이 헷갈린다면 시간이 좀 걸리더라도 본인이 직접 처음부터 강사님의 예제와 유사한 구성을 새로 기획하여 만들어 보는 것을 추천한다. 1. 연관관계란? 말 그대로 두 객체가 연관되어 서로의 객체를 참조 가능한 상태를 의미한다. 2. 방향(Direction) 의 종류와 의미 , 단방향과 양방향이란? 두 객체(Entity) 가 있을 때, 서로 연관관계가 있다면 양방향 연관 관계, 한쪽에 대해서만 관계가 있..

Dev/JPA 2023.12.27

JPA 에서 기본 키 매핑하기

1. 기본키매핑에는 어떤 애노테이션을 사용하는가? 기본키 매핑에는 @Id, @GeneratedValue 를 사용할 수 있다. 기본키를 생성하는 방법은 직접 값을 지정하는 방법과, auto-increment, sequence 생성들을 통해 자동으로 방법등 여러가지가 있는데 크게 직접할당과 자동 생성으로 나눌 수 있다. 1) 직접 할당 : @Id 만을 사용한다. @Id private Long id; 2) 동적 할당 : @Id 와 @GeneratedValue 를 동시에 사용한다. @Id @GeneratedValue private Long id; 여기서 자동생성 하는 방법에서 총 네가지의 strategy 를 선택할 수 있다. 2. 기본키 매핑시 @GeneratedValue 에 지정할 수 있는 strategy 종..

Dev/JPA 2023.12.26

JPA 에서 데이터베이스 스키마 자동생성 기능 사용하기

jpa 를 사용하여 개발시, 개발 환경에서 간단하게 사용할 수 있는 기능중에 데이터 베이스 스키마 자동생성 기능이 있다. 사용 방법은 persistence.xml 파일에 아래와 같이 추가한다. value 에는 create, update, validate, none 이 들어 올 수 있는데 각 옵션의 의미는 아래와 같다. create 기존테이블 삭제 후 다시 생성 (DROP + CREATE) create-drop create와 같으나 종료시점에 테이블 DROP update 변경분만 반영(운영DB에는 사용하면 안됨) validate 엔티티와 테이블이 정상 매핑되었는지만 확인 none 사용하지 않음 개발 초기 단계에는 create, update , 테스트 서버는 update 또는 validate, 스테이징과 운..

Dev/JPA 2023.12.11

JPA 에서 영속성의 의미와 사용하는 애노테이션 정리

jpa 를 강의를 들으면서 가장 기본적인 영속성의 개념에 대해 간단하게 정리해보려고 한다. 1. 영속성 컨텍스트란 무엇인가? 데이터 베이스와 객체 사이에 중간 단계가 있는 개념이라고 할 수 있다. 객체를 데이터베이스로 옮기거나, 데이터베이스에 있는 데이터를 객체에 매핑할 때 중간에 존재하는 저장 공간이다. 간단하게 코드로 나타내면 EntityManager.persist(entity) 로 표현할 수 있다. 이 때 이 영속성 컨텍스트가 존재함으로써 일종의 버퍼링 기능을 수행하게 되는데 persistence.xml 파일에 를 추가하여 버퍼 사이즈를 조율할 수 있다. 버퍼링 기능을 사용하면 쿼리를 일일히 데이터베이스에 날리는게 아니라 지정한 버퍼 크기만큼 쌓아놨다가 한번에 데이터베이스에 요청하여 커밋할 수 있다..

Dev/JPA 2023.12.11

h2 초기 연결시 JdbcSQLNonTransientConnectionException 에러 해결 방법

maven 기반의 프로젝트에 대해 jpa 사용을 위해 persistence.xml 파일을 생성하고 h2 도 다운로드 후 실행되는 것 까지 확인 했는데, main 을 실행하니 Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database "/Users/gwongahyeon/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-..

Dev/JPA 2023.12.06

h2 db 연결시 javax.xml.bind.JAXBException 오류 해결 방법

김영한 강사님의 인프런 jpa 강의 수강 중 아래와 같은 오류가 발생했다. Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ... 12 more maven 프로젝트로 기본 설정파..

Dev/JPA 2023.12.06