프로그램이 종료되어도 데이터들이 사라지지 않고 특정 공간에 계속 저장되는 것
⇒ Java에선 기본적으로 JDBC API를 통해 제공
⇒ JDBC의 단점 : 직접 Java와 DB를 매핑해줘야 하는 복잡함과 번거로움이 존재
⇒ 영속성 프레임워크 (Persistance Framework)를 통해 직접 JDBC를 프로그래밍 하지 않게 도와줌
⇒ ex) SQL Mapper, ORM 등
[데이터베이스] ORM이란? (Node.js ORM Lib Sequelize 소개) - 하나몬
기존의 DAO(Connection, sql문 처리 등) 역할
DB연동에 필요한 OOP언어(java)와 SQL(CRUD메소드)을 자동으로 제공
객체 단위로 DB처리
프로젝트의 DB를 설정할 수 있고 유지보수가 쉬움
비즈니스 로직과 DB(DAO)를 분리 ⇒ DTO와 Repository(Entity)
DTO와 Entity의 변환 방법
// Entity => Dto 변환
// 1. Getter, Setter 사용
public static BoardDto toBoardDto1(BoardEntity boardEntity) {
BoardDto boardDto = new BoardDto();
boardDto.setId(boardEntity.getId());
boardDto.setTitle(boardEntity.getTitle());
boardDto.setContent(boardEntity.getContent());
boardDto.setWriter(boardEntity.getWriter());
boardDto.setHit(boardEntity.getHit());
boardDto.setBoardPw(boardEntity.getBoardPw());
boardDto.setCreateTime(boardEntity.getCreateTime());
boardDto.setUpdateTime(boardEntity.getUpdateTime());
return boardDto;
}
// 2. @Bulider 사용 (빌더패턴)
public static BoardDto toBoardDto2(BoardEntity boardEntity) {
return BoardDto.builder() // 객체생성 불필요
.id(boardEntity.getId())
.title(boardEntity.getTitle())
.content(boardEntity.getContent())
.writer(boardEntity.getWriter())
.hit(boardEntity.getHit())
.boardPw(boardEntity.getBoardPw())
.createTime(boardEntity.getCreateTime())
.updateTime(boardEntity.getUpdateTime())
.build();
}
[스프링부트 (7)] Spring Boot JPA(1) - 시작 및 기본 설정