티스토리 뷰
3. Entity
엔티티는 영속성을 가진 객체로 DB 테이블에 보관할 대상(영속 컨텍스트에 속한 객체)
이러한 엔티티는 특정한 시점에 DB에 영향을 미치는 쿼리를 실행
◆ 엔티티를 설정하는 방법
1. @Entity 어노테이션을 이용
2. xml 설정을 이용
function | Annotation |
객체와 테이블 매핑 | @Entity, @table |
기본 키 매핑 | @Id |
필드와 컬럼 매핑 | @Column |
연관관계 매핑 | @ManyToOne, @JoinColumn |
@Entity JPA를 사용할 클래스를 명시하며, 테이블과 매핑하는 역할
@Entity가 붙은 클래스는 JPA가 관리하는 클래스로, 해당 클래스를 엔티티라고 함.
JPA를 사용해서 테이블과 매핑할 클래스는 반드시 @Entity 를 붙여야 함.
@Entity의 속성
속성명 | 설명 | 기본값 |
name | JPA에서 사용할 엔티티 이름을 지정 다른 패키지에 이름이 같은 이름이 있다면 직접 지정하여 충돌을 방지해야함 |
클래스 이름 |
@Entity사용 시 주의 사항
1. 기본 생성자 필수
2. final 클래스, enum, interface, inner 클래스에는 사용 불가
3. 저장할 필드에 final 사용불가
4. 기본 생성자는 자동으로 생성 그러나, 생성자를 하나 이상 만들면 기본 생성자도 정의해야 한다.
@Table 엔티티와 매핑할 테이블을 지정
기본적으로 @Entity로 선언된 클래스의 이름은 실제 데이터베이스의 테이블 명과 일치하는 것을 매핑함.
@Entity의 클래스명과 데이터베이스의 테이블명이 다를 경우에 @Table(name=" ")과 같은 형식을 사용해서 매핑이 가능
@Table 주석을 사용하지 않으면 엔티티 이름이 테이블 이름으로 간주
@Table의 속성
속성명 | 설명 | 기본값 |
name | 매핑할 테이블 이름을 설정 | 엔티티 이름 |
catalog | 카달로그 기능이 있는 데이터 베이스에서 catalog를 매핑 | |
schema | schema 기능이 있는 데이터 베이스에서 schema를 매핑 | |
uniqueConstraint | DDL 생성시 유니크 제약조건을 만들며, 2개 이상의 복합 유니크 제약 조건도 만들 수 있음. ※ 스키마 자동 생성 기능을 사용해서 DDL을 만들때만 사용 |
@Entity | @Table |
@Entity public class Kepco { //... } |
@Entity @Table(name="Kepco_info") public class Kepco{ // ... } |
JPA에서는 쿼리를 자동으로 생성해줌. JPA는 클래스 이름을 테이블 이름으로 사용하는있는데 엔티티는 기본적으로 Kepco 테이블과 매핑됨 |
클래스 이름과 테이블 이름이 다른 경우 @Table(name=”테이블명”)을 사용하여 테이블의 이름을 지정할 수 있음. |
@Id 기본키(Primary Key)라는 것을 명시하는 역할
모든 엔티티에 반드시 @Id 지정해 주어야 함
@Id가 사용된 필드를 "식별자 필드"라 함.
@GeneratedValue와 함께 식별키를 어떤 전략으로 생성하는지 명시※ @GeneratedValue : 키값의 자동생성 전략을 설정
[기본키 할당 방법 ]
직접할당 : 기본 키를 어플리케이션에서 직접 할당 해주는 방법
자동생성 : 데이터베이스가 자동으로 할당해주는 방법 (예를들어, 오라클은 sequence, MySQL의 auto_increment)
※ 데이터베이스 벤더마다 sequence, auto_increment 등 기본키를 자동생성하는 지원하는
방법이 다름 / Spring Data JPA는 이를 해결하기위해, 4가지 자동생성 방법을 제공
[기본키 자동생성 사용방법 ]
@Id 어노테이션을 사용한다.
@GeneratedValue를 사용한다.
@GeneratedValue에 원하는 키 생성 전략을 선택한다. (IDENTITY, SEQUENCE, TABLE, AUTO)
[ 기본키 자동생성 방법 4가지 ]
IDENTITY | 기본 키 생성을 데이터베이스에 위임하는 방법 (데이터베이스에 의존적) 주로 MySQL, PostgresSQL, SQL Server, DB2에서 사용 |
SEQUENCE | 데이터베이스 시퀀스를 사용해서 기본 키를 할당하는 방법 (데이터베이스에 의존적) 주로 시퀀스를 지원하는 Oracle, PostgresSQL, DB2, H2에서 사용 @SequenceGenerator를 사용하여 시퀀스 생성기를 등록하고, 실제 데이터베이스의 생성될 시퀀스이름을 지정해줘야 함. |
TABLE | 키 생성 테이블을 사용하는 방법 키 생성 전용 테이블을 하나 만들고 여기에 이름과 값으로 사용할 컬럼을 만드는 방법 테이블을 사용하므로, 데이터베이스 벤더에 상관없이 모든 데이터베이스에 적용이 가능 |
AUTO | 데이터베이스 벤더에 의존하지 않고, 데이터베이스는 기본키를 할당하는 벙법 데이터베이스에 따라서 IDENTITY, SEQUENCE, TABLE 방법 중 하나를 자동으로 선택해주는 방법 Oracle일 경우 SEQUENCE를 자동으로 선택해서 사용. 따라서, 데이터베이스를 변경해도 코드를 수정할 필요가 없음 |
@Column 컬럼의 속성값을 설정
인스턴스 변수가 칼럼이 되기 때문에, 컬럼명을 별도로 지정하거나 컬럼의 사이즈, 제약조건들을 추가하기 위해 사용
@Column 어노테이션은 프로퍼티의 이름과 테이블의 칼럼 이름이 같다면 생략이 가능하지만, 다를 경우에는 @Column 어노테이션을 지정해줘야 함.
@Entity @Table(name="Kepco_info") public class Kepco { @Id private String number; private String name; @Column(name="description") private String desc; } |
★ INSERT, UPDATE, DELETE의 동작이 보통과 다르기 때문에 예상하지 못하거나 실수를 방지하기 위해 읽기 전용 매핑설정이 가능 @Column(name="id", insertable=false, updatable=false) |
@Column의 속성
속성명 | 설명 | 기본값 |
name | 맵핑할 테이블의 컬럼 이름을 지정 | |
insertable | 엔티티 저장시 선언된 필드도 같이 저장 | |
updateable | 엔티티 수정시 이 필드를 함께 수정 | |
table | 지정한 필드를 다른 테이블에 맵핑 | |
nullable | NULL을 허용할지, 허용하지 않을지 결정 | |
unique | 제약조건을 걸 때 사용 | |
columnDefinition | DB 컬럼 정보를 직접적으로 지정할 때 사용 | |
length | 길이를 입력 | 255 |
precsion, scale | BigInteger, BigDecimal 타입에서 사용, 각각 소수점 포함 자리수, 소수의 자리수를 의미 |
'WEB > 기타' 카테고리의 다른 글
[JPA] 4. Repository (0) | 2024.01.23 |
---|---|
[JPA] 3. Entity - 연관관계 매핑 (0) | 2024.01.20 |
[JPA] 2. JPA 사용 설정 (0) | 2024.01.20 |
[JPA] 1. JPA (Java Persistence API) 란? (0) | 2024.01.20 |
DBMS, JDBC, ORM, Hibernate (0) | 2024.01.20 |
- Total
- Today
- Yesterday
- 파비콘사이즈
- 정보처리기사 #정보처리기사요약 #정보처리기사요점정리
- 좋은책 #밥프록터 #부의원리
- 와이파이증폭기추천 #와이파이설치
- ajax
- 쇼팬하우어 #좋은책
- 자바스크립트정규표현식
- iptime와이파이증폭기 #와이파이증폭기설치
- 증폭기 #아이피타임증폭기
- 좋은책
- 무료폰트 #무료웹폰트 #한수원한돋움 #한수원한울림 #한울림체 #한돋움체
- thymeleaf
- 테스크탑무선랜카드 #무선랜카드 #아이피타이무선랜카드 #a3000mini #무선랜카드추천
- 자바스크립트 #javascript #math
- lg그램pro #lg그램 #노트북 #노트북추천 #lg노트북
- jdk #jre
- 파비콘 #파비콘 사이트에 적용
- 바지락칼국수 #월곡동칼국수 #칼국수맛집
- 광주분식 #광주분식맛집 #상추튀김 #상추튀김맛집 #광주상추튀김
- 와이파이약할때
- jQuery #jQuery이미지슬라이드 #이미지슬라이드
- 와이파이신호 #와이파이 #와이파이신호세게
- 썬크림 #닥터지썬크림 #내돈내산 #내돈내산썬크림 #썬크림추천 #spf50썬크림 #닥터지메디유브이울트라선
- css미디어쿼리 #미디어쿼리 #mediaquery
- SQL명령어 #SQL
- echart
- 자바스크립트countiue
- 자바스크립트break
- 연명의료결정제도 #사전연명의료의향서 #사전연명의료의향서등록기관 #광주사전연명의료의향서
- sw기술자평균임금 #2025년 sw기술자 평균임금
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |