Java(15)
-
값 타입
엔티티 타입 vs 값 타입JPA의 데이터 타입은 엔티티 타입과 값 타입으로 나뉜다. 이 둘을 비유하면 다음과 같다엔티티 타입 : 살아있는 생물(데이터가 변경되도 바뀌지 않음)값 타입 : 단순한 수치 정보값 타입은 세 가지로 나눌 수 있다.기본값 타입자바 기본 타입래퍼 클래스String임베디드 타입컬렉션 값 타입1. 기본값 타입String, int 등이 값 타입이다. 이들은 식별자 값도 없고 생명주기도 회원 엔티티에 의존한다. 따라서 회원 엔티티를 제거하면 이들도 제거된다. 2. 임베디드 타입(복합 값 타입)새로운 값 타입을 직접 정의하여 사용하는 것을 임베디드 타입이라고 한다. 이 때 직접 정의한 임베디드 타입도 int, String처럼 값 타입이다. 예시)@Entitypublic class Member..
2024.05.16 -
프록시와 연관관계 매핑
1. 프록시엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아니다. JPA는 이런 문제를 해결하려고 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 방법을 제공하는데 이것을 지연 로딩이라 한다. 그런데 지연 로딩 기능을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데 이것을 프록시 객체라 한다. 1 - 1. 프록시 기초JPA에서 식별자로 엔티티 하나를 조회할 때는 EntityManager.find()를 사용한다. 이 메소드는 영속성 컨텍스트에 엔티티가 없으면 데이터베이스를 조회한다. 이렇게 데이터베이스를 조회해야 하는 상황에서 엔티티를 실제 사용하는 시점까지 데이터베이스 조회를 미루고 싶으면 EntityManager.getReference()..
2024.05.06 -
연관관계 매핑 기초
※ 기본 용어 정리 1) 방향 : 1 - 1) 단방향 : 관계가 있을 때 둘 중 한쪽만 참조하는 것을 단방향 관계라고 한다. 1 - 2) 양방향 : 관계가 있을 때 서로를 참조하는 것을 양방향 관계라고 한다. 2) 다중성 : 다대일(N : 1), 일대다(1 : N), 일대일(1 : 1), 다대다(N : M) 다중성이 있다. 3) 연관관계의 주인 : 양방향 연관관계로 만들 시 연관관계의 주인을 정해야 한다. 1. 단방향 연관관계 다음과 같은 상황을 가정한다. - 회원과 팀이 있다. - 회원은 하나의 팀에만 소속될 수 있다. - 회원과 팀은 다대일 관계다. ● 객체 연관관계 - 회원 객체는 Member.team 필드로 팀 객체와 연관관계를 맺는다. - 회원 객체와 팀 객체는 단방향 관계다. 회원은 Membe..
2024.04.11 -
엔티티 매핑
1. @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다. @Entity가 붙은 클래스틑 JPA가 관리하게 된다. ※ 주의사항 1. 기본 생성자는 필수다. 2. final 클래스, enum, interface, inner 클래스에는 사용할 수 없다. 3. 저장할 필드에 final을 사용하면 안된다. 2. @Table @Table은 엔티티와 매핑할 테이블을 지정한다. 생략하면 매핑한 엔티티 이름을 테이블 이름으로 사용한다. ※ 속성 1. name : 매핑할 테이블 이름 2. catalog : catalog 기능이 있는 데이터베이스에서 catalog를 매핑한다. 3. schema : schema 기능이 있는 데이터베이스에서 schema를 매핑한다. 4. u..
2024.04.04 -
영속성 관리
JPA 분류 1. 설계 부분 2. 실제 사용하는 부분 엔티티 매니저 주의사항 엔티티 매니저는 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 스레드 간에 절대 공유하면 안된다. 영속성 컨텍스트 '엔티티를 영구 저장하는 환경'이라는 뜻으로 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. DB와는 다른 개념이다! 엔티티의 생명주기 엔티티에는 비영속, 영속, 준영속, 삭제 총 4가지의 상태가 존재한다. - 비영속 상태 : 엔티티 객체를 생성할 때 나온 순수한 객체이다. 따라서 영속성 컨텍스트와 데이터베이스와는 전혀 관련이 없다. - 영속 상태 : 엔티티 매니저를 통해 엔티티를 영속성 컨텍스트에 저장하게 되는데 이렇게 영속성 컨텍스트가 관리하는 ..
2024.03.27 -
java stream()이란?
stream을 직역하면 '흐름'이라는 뜻으로 운영 체제에 의해 생성되는 가상의 연결고리를 의미한다. java api 공식 페이지( java.util.stream (Java Platform SE 8 ) (oracle.com) )를 들어가면 여러가지 인터페이스들을 볼 수 있는데 사실 이걸봐서는 난 잘 모르겠더라... 내가 도움됬던 건 다른 분의 블로그였는데 그 분 포스팅을 참고하면 좀 쉽게 이해가 될 듯 하다. 블로그 주소 : https://futurecreator.github.io/2018/08/26/java-8-streams/
2024.03.13