현재

[PP1] jpa + springboot + mysql (1)(게시물 등록,조회) 본문

Java/여러가지프로그램구현연습

[PP1] jpa + springboot + mysql (1)(게시물 등록,조회)

AAAge 2024. 4. 1. 22:25

<Controller>

@RequiredArgsConstructor 

=>Autowired대신에 사용, final keyword만 생성자 초기화 시킨다

@ ModelAttributes(BoardDto boardDto)

=>Model에 추가해 view에서 사용가능하도록 한다.

 

<DTO>

@NoArgsConstructor

=>기본 생성자와 같음

@AllArgsConstructor

=>모든 매개변수를 field로 하는생성자

 

<Entity>

@Table(name = "board_table")
=> Table생성
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // auto_increment와 같은 역할을 한다.
private Long id;
=>Id어노테이션 설정(필수), 

 

public static 설정으로 Dto -> Entity 타입으로 바꾸는 전역설정?

public static BoardEntity toSaveEntity(BoardDto boardDto){
        BoardEntity boardEntity = new BoardEntity();
        boardEntity.setBoardWriter(boardDto.getBoardWriter());
        boardEntity.setBoardPass(boardDto.getBoardPass());
        boardEntity.setBoardTitle(boardDto.getBoardTitle());
        boardEntity.setBoardContents(boardDto.getBoardContents());
        boardEntity.setBoardHits(0);

        return boardEntity;
    }

 

 

@MappedSuperclass -> 다른 Entity에 상속시킬 수 있게 한다.
@EntityListeners(AuditingEntityListener.class) -> 필드가 변경사항이 있으면 동작한다?
@Getter
public class BaseEntity {
    @CreationTimestamp -> 현재 시간을 자동으로 생성
    @Column(updatable = false) -> 생성이후 업데이트 불가
    private LocalDateTime createdTime;

    @UpdateTimestamp -> 현재 시간을 자동으로 생성
    @Column(insertable = false) -> 생성이후 삽입 불가
    private LocalDateTime updatedTime;
}

 

<Repository>

public interface BoardRepository extends JpaRepository<BoardEntity,Long>{}  

JpaRepository < 적용할 Entity, entity의 Pk 타입 >

 

repository api ?

- save(entity) : entity 타입을 db에 저장한다

- findAll() : repository의 있는 정보를 모두 찾음 List<Entity> 타입으로 가져온다.