spring-boot-starter-data-jpa 를 이용해서 JPA를 설정한다.Hibernate를 설정해야한다.
spring.jpa.hibernate.ddl-auto=update //테이블 생성 방식
//Hibernate의 DB 요청을 출력하기 위한 옵션
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
ddl-auto
과거 단순한 객체 Class였던걸 Entity로 교체해야한다.
@Entity // JPA가 관리할 수 있는 Entity 클래스 지정
@Getter
@Setter
@Table(name = "memo") // 매핑할 테이블의 이름을 지정
@NoArgsConstructor
public class Memo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username", nullable = false)
private String username;
@Column(name = "contents", nullable = false, length = 500)
private String contents;
public Memo(MemoRequestDto requestDto) {
this.username = requestDto.getUsername();
this.contents = requestDto.getContents();
}
public void update(MemoRequestDto requestDto) {
this.username = requestDto.getUsername();
this.contents = requestDto.getContents();
}
}
추가된 어노테이션은 @Entity, @Table 이 있고, 필드에 추가된 어노테이션은 @Id, @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "~", nullable = false, length = 500) 과 같다.
application.properties에 DB 정보를 전달해 주면 이를 토대로 EntityManagerFactory가 생성된다.
이후, @PersistenceContext 를 통해서 EntityManager 를 주입받아서 사용이 가능해진다.
@PersistenceConext 애너테이션을 사용하면 자동으로 생성된 EntityManager를 주입받아 사용할 수 있습니다.
@Transactional 애너테이션을 클래스나 메서드에 추가하면 쉽게 트랜잭션 개념을 적용할 수 있다.@Transactional(readOnly = true)와 같이 옵션을 부여했는데, 특정 메소드에선 해당 옵션을 사용하고싶지 않다면 @Transactional 그냥 덮어 쓰면 된다.