분류 전체보기

🧐 값 타입 컬렉션 값 타입을 컬렉션에 담아서 사용할 때, 해당 컬렉션을 값 타입 컬렉션이라 합니다. (@OneToMany 처럼 엔티티를 컬렉션으로 사용하는 것이 아닌, Integer, String, 임베디드 타입 같은 값 타입을 컬렉션으로 사용하는 것입니다.) 관계형 데이터베이스는 컬렉션을 담을 수 있는 구조가 없습니다. 따라서 이를 저장하기 위해서는 별도의 테이블을 만들어서 저장해야 합니다. 이때 값 타입 컬렉션은 개념적으로 보면 1대 N 관계입니다. (그리고 값 타입을 저장하는 테이블은 값 타입을 소유한 엔티티의 기본 키와 모든 값 타입 필드를 묶어서 PK로 사용하며, 엔티티의 기본 키를 PK겸 FK로 사용합니다.) 🧐 @ElementCollection 값 타입 컬렉션을 매핑할 때 사용합니다. RD..
@Access JPA가 엔티티 데이터에 접근하는 방식을 지정합니다. 접근하는 방식에는 두가지 방식이 있는데 하나하나 살펴보겠습니다. 필드 접근 : AccessType.FILED 필드에 직접 접근합니다. 필드 접근 권한이 private이어도 접근할 수 있습니다. 프로퍼티 접근 : AccessType.PROPERTY 접근자(getter)를 사용합니다 사용 @Entity @Access(AccessType.FIELD) public class Member { @Id private String id; } @Access를 설정하지 않을 경우 @Access를 설정하지 않으면 @Id의 위치를 기준으로 접근 방식이 설정됩니다. @Id가 필드에 달려있으면 필드 접근, Getter에 달려있으면 프로퍼티 접근방법을 사용합니다...
@Transient 해당 필드를 영속 대상에서 제외시킬 때 사용합니다. 따라서 데이터베이스에 저장하지 않고 조회하지도 않습니다. 객체에 임시로 어떤 값을 보관할 목적으로 사용합니다. @Entity public class Member { @Id private String id; private Stirng username; private Stirng password; @Trasient private Stirng checkPassword; } 📔 Reference 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 본..
@Basic 자바의 기본 타입을 명시적으로 매핑해주는? 애노테이션입니다. 거의 사용할 일이 없는 것 같습니다. 설명 The simplest type of mapping to a database column. The Basic annotation can be applied to a persistent property or instance variable of any of the following types: Java primitive types, wrappers of the primitive types, String, java.math.BigInteger, java.math.BigDecimal, java.util.Date, java.util.Calendar, java.sql.Date, java.sql.Ti..
@Lob 데이터베이스의 BLOB, CLOB 타입과 매핑합니다. @Lob에는 지정할 수 있는 속성이 없습니다. 대신에 매핑하는 필드 타입이 문자면 CLOB이고, 나머지는 BLOB으로 매핑됩니다. (Lob은 Large Object의 줄임말입니다) CLOB : 문자 대형 객체, BLOB : 이진 대형 객체 (이미지, 동영상 등등) @Lob 주석은 @Basic 혹은 @ElementCollection 과 함께 사용할 수 있습니다. Mysql의 TEXT 매핑하는 법 @Column(columnDefinition = "TEXT") Reference 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄..
시작에 앞서 자바 8부터 LocalDate, LocalDateTime을 사용할 수 있습니다. 하이버네이트 최신 버전을 사용한다면, @Temporal 어노태이션을 생략하여도 LocalDate와 LocalDateTime을 사용할 수 있습니다. @Entity public class Member{ @Id private Long id; private LocalDateTime createdDate; } @Temporal 날짜 타입(java.util.Date, java.util.Calendar)을 매핑할 때 사용합니다. 자바의 Date 타입에는 년월일 시분초가 있지만, 데이터베이스에는 date(날짜), time(시간), timestamp(날짜와 시간)라는 세 가지 타입이 별도로 존재합니다. @Temporal을 생략하..
@Enumerated 자바의 enum 타입을 매핑할 때 사용합니다. 속성 속성 기능 기본값 value EnumType.ORDINAL : enum 순서를 데이터베이스에 저장 EnumType.STRING : enum 이름을 데이터베이스에 저장 EnumType.ORDINAL 결론부터 말하면 EnumType.STRING을 사용하는 것을 권장합니다. 예시 enum RoleType { ADMIN, USER } @Enumerated(EnumType.STRING) private RoleType roleType; EnumType.ORDINAL enum에 정의된 순서대로, ADMIN은 0, USER은 1값이 데이터베이스에 저장됩니다. 장정 : 데이터베이스에 저장되는 데이터 크기가 작습니다. 단점 : 이미 저장된 enum의..
🧐 @Column @Column은 객체 필드를 테이블의 컬럼에 매핑시켜주는 어노테이션입니다. 속성 속성 기능 기본값 name 필드와 매핑할 테이블의 컬럼 이름을 지정한다. 객체의 필드 이름 insertable (거의 사용하지 않음) 엔티티 저장 시 이 필드도 같이 저장한다. false로 설정하면 이 필드는 데이터베이스에 저장하지 않는다. false 옵션은 읽기 전용일 때 사용한다 true updateable 엔티티 수정 시 이 필드도 같이 수정한다. false로 설정하면 데이터베이스에 수정하지 않는다. false 옵션은 읽기 전용일 때 사용한다 true table (거의 사용하지 않음) 하나의 엔티티를 두 개 이상의 테이블에 매필할 때 사용한다.(@SecondaryTable 사용) 지정한 필드를 다른 테..
말 랑
'분류 전체보기' 카테고리의 글 목록 (167 Page)