반응형
@Entity: DTO에 명시해주는 어노테이션으로 해당 객체가 JPA에서 관리되어지는 Entity객체임을 나타낸다. 반드시 구분할 수 있는 기본키가 존재해야한다.(@ID 어노테이션으로 정의 해준다.)
@GeneratedValue: 기본키를 자동적으로 생성할 수있도록 도와주는 어노테이션
@Table: DTO에 명시해주는 어노테이션으로 선언해주게 되면 해당 클래스의 매핑되는 테이블을 생성할 때 테이블의 해당하는 속성을 정의해 줄 수 있다.
테이블명 선언 예제
@Table(name = "user_aa")
확인
인덱스와 키 설정도 함께 만들어 줄 수 있지만 실제 DB에서는 사용이 불가하다.
@Table(name = "user_aa", indexes = {@Index(columnList = "name")}, uniqueConstraints = {@UniqueConstraint(columnNames = {"email"})})
@Column: Dto내 변수에 선언해주게 되면 해당 컬럼에 대한 속성을 정의해 줄 수 있다.
변수명 선언 예제
@Column(name = "createA")
private LocalDateTime createdAt;
nullable 속성을 정의해 주어 null값을 가능하게 할지 설정 가능하다
@Column(name = "createA", nullable = false)
private LocalDateTime createdAt;
updatable, insertable 속성을 정의해주어 insert, update 할때 값을 제외시킬수도 있다.
예제
@Column(updatable = false)
private LocalDateTime createdAt;
@Column(insertable = false)
private LocalDateTime updatedAt;
테스트 코드
@Test
void insertAndUpdateTest(){
User user = new User();
user.setName("martin");
user.setEmail("martin2@fastcampus.com");
userRepository.save(user);
User user2 = userRepository.findById(1L).orElseThrow(RuntimeException::new);
user2.setName("marrrrrrrrrtin");
userRepository.save(user2);
}
insert 처리 할경우 false 처리했던 updatedAt 컬럼을 제외시킨다
update 처리 할경우 false 처리했던 createdAt 컬럼을 제외시킨다
그 외에도 다른 속성들을 지정해 줄 수 있다.
@Transient: 변수명에 선언하며 선언하게 되면 해당 컬럼은 DB에 반영되지 않고 프로그램 실행시에만 생성되었다가 프로그램 종료시 함께 종료되는 컬럼으로 선언 된다.
@Transient
private String testData;
테이블 생성할 경우 제외되는 것을 확인할 수 있다.
참고 사이트
반응형
'Spring > JPA' 카테고리의 다른 글
Entity Listener (0) | 2021.07.18 |
---|---|
Enum 사용 예제 (0) | 2021.07.18 |
Query Method 예제 - 5(페이징 처리) (0) | 2021.07.17 |
Query Method 예제 - 4 (정렬) (0) | 2021.07.17 |
Query Method 예제 - 3 (0) | 2021.07.17 |