본문 바로가기
Spring/JPA

Entity 기본 속성

by step 1 2021. 7. 18.
반응형

@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;

테이블 생성할 경우 제외되는 것을 확인할 수 있다.

 

참고 사이트

https://velog.io/@leyuri/Spring-boot-JPA-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98-Entity-Table-Column-Id-Lombok

 

Spring-boot JPA 어노테이션 @Entity, @Table, @Column, @Id @Lombok

객체 - 테이블 맵핑 : @Entity, @Table필드 - 컬럼의 팹핑 : @Column기본키의 맵핑 : @Id조인 맵핑 : @ManyToOne, @JoinColumn@Entity 어노테이션을 클래스에 선언하면 그 클래스는 JPA가 관리한다. 그러므로 DB의 테

velog.io

 

반응형

'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