Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 정적 리소스
- 백준
- 알고리즘
- Application Argument
- JsonSerializer
- Application Event
- JPA
- WebApplication Type
- HATEOAS
- HttpMessageConverters
- 브루트포스
- 백트래킹
- 리소스 서버
- rest api
- cors
- 다익스트라
- 스프링부트
- 리소스핸들러
- Application Runner
- 백기선
- webjar
- application.properties
- OAuth2
- @ConfigurationProperties
- 스프링 부트
- Spring Security
- @Profile
- 외부설정
- EnableAutoConfiguration
- AuthenticationPrincipal
Archives
- Today
- Total
아카이브
[스프링 데이터 JPA] JPA 프로그래밍 2. 엔티티 타입 맵핑 본문
@Entity
- 엔티티는 객체 세상에서 부르는 이름
- 기본적으로 @Table을 포함하고 있음
- 보통 클래스와 같은 이름을 사용하기 때문에 값을 변경하지 않음
- JPQL에서 사용된다.
@Table
- 릴레이션 세상에서 부르는 이름
- @Entity의 이름이 기본값
- SQL에서 쓰인다.
@Id
- 엔티티의 주키를 맵핑할 때 사용
- 자바의 모든 primitive 타입과 그 래퍼 타입을 사용할 수 있음
- Date랑 BigDecimal, BigInteger도 사용 가능
- 복합 키를 만드는 맵핑하는 방법도 있지만 그건 논외로..
@GeneratedValue
- 주키의 생성 방법을 맵핑하는 애노테이션
- 생성 전략과 생성기를 설정할 수 있다
다른 전략을 임의로 지정할 수 있음 보통은 기본값을 사용
@Column
- unique: unique 설정 여부 true, false를 줄 수 있음
- nullable: null 사용여부 true, false를 줄 수 있음
- length
- columnDefinition: 반드시 SQL을 사용해 명시해주어야 할 때 설정
- ...
@Temporal
- 현재 JPA 2.1까지는 Date와 Calendar만 지원
@Transient
- 컬럼으로 맵핑하고 싶지 않은 멤버 변수에 사용
application.properries
# logger를 사용해서 sql log에 찍히는(?)파라미터들을 보는 방법도 있으니 찾아볼 것
logging.level.org.hibernate.type.descriptor.sql=trace
# hibernate sql log
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
Account 도메인 클래스
@Entity(name = "Account") // 테이블 맵핑. name은 table이름
public class Account { // User는 keyword이므로 되도록 사용하지 말것
@Id // ID로 쓴다
@GeneratedValue // 자동생성값, DB마다 생성전략이 다를 수 있
private Long id;
@Column(nullable = false, unique = true)// 생략되어있는거랑 마찬가이다. ddl-auto가 update인 경우 Column 속성을 변경하면 이미 만들어져 있기 때문에 오류가 난다. 그래서 보통 개발시 create가 간편하다.
private String username;
private String password;
@Temporal(TemporalType.TIMESTAMP)
private Date created = new Date();
private String yes;
@Transient // 컬럼으로 맵핑을 안해준다. 순수히 객체로만 사용할때
private String no;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
'Spring > 스프링 데이터 JPA' 카테고리의 다른 글
[스프링 데이터 JPA] JPA 프로그래밍 4. 1대다(관계) 맵핑 (0) | 2021.01.10 |
---|---|
[스프링 데이터 JPA] JPA 프로그래밍 3. Value 타입 맵핑 (0) | 2021.01.10 |
[스프링 데이터 JPA] JPA프로그래밍 1. 프로젝트 셋팅 (0) | 2021.01.10 |
[스프링 데이터 JPA] ORM 패러다임 불일치 (0) | 2021.01.10 |
[스프링 데이터 JPA] ORM 개요 (0) | 2021.01.10 |