DB는 이미 준비되어 있다는 가정하에 작성하였습니다.
연동하고 @Entity를 만들어서 실제로 사용할 수 있는지 테스트까지 해보겠습니다.
build.gradle
JPA를 사용하기 위해 org.springframework.boot:spring-boot-starter-data-jpa 디펜던시를 추가하겠습니다.
mariadb를 사용하겠습니다.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' // MariaDB
다른 DB를 사용할 때에 참고해주세요.
runtimeOnly 'com.h2database:h2' // H2
runtimeOnly 'com.microsoft.sqlserver:mssql-jdbc' // MSSQL
runtimeOnly 'mysql:mysql-connector-java' // MYSQL
runtimeOnly 'org.postgresql:postgresql' // PostgreSQL
pom.xml
Maven 을 쓰신다면 요렇게 될거구요.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<scope>runtime</scope>
</dependency>
application.yml
MariaDB 기준입니다.
spring:
datasource:
url: jdbc:mariadb://localhost:3306/tutorial
driver-class-name: org.mariadb.jdbc.Driver
username: root
password: 1234
jpa:
open-in-view: false
generate-ddl: true
show-sql: true
hibernate:
ddl-auto: update
build.gradle에서 연결할 DB에 필요한 드라이버를 추가하고
application.yml의 driver-class-name에 드라이브 클래스를 찾아서 설정만 하면 끝입니다.
저는 지금 위에 공유드린 드라이버들 다 추가해서 다 나오네요.
연동은 이게 끝이에요...
너무 허무하니깐, 잘 동작하나 간단하게 코딩해보고 실행까지 해볼게요.
BoardEntity.java
저는 BoardEntity라고 명명하는 편인데 Entity 모델은 Board로 명명하는 경우가 더 많은 것 같습니다.
@Entity
@Table(name = "board")
@Getter
@Setter
public class BoardEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long boardId;
@Column(length = 100)
private String title;
@Column(length = 4000)
private String contents;
}
BoardRepository.java
JpaRepository를 상속받고 제네릭 타입에 엔티티 클래스와 ID의 타입을 넣어줍니다.
우리는 이제 BoardRepository 인터페이스를 사용하여 이미 생성된 쿼리 API를 사용할 수 있습니다.
public interface BoardRepository extends JpaRepository<BoardEntity, Long> {
}
BoardService.java
JPA를 사용해서 테이블을 조회해볼게요.
게시판 ID를 파라미터로 받아서 board 테이블에 쿼리를 날려 row를 받아오는 로직이에요.
정보가 없으면 예외를 발생시켰어요.
@Service
public class BoardService {
@Autowired
private BoardRepository boardRepository;
public BoardEntity getBoard(Long boardId) {
return boardRepository.findById(boardId).orElseThrow(() ->
new RestException(HttpStatus.NOT_FOUND, "Not found board"));
}
}
boardRepository에서 사용할 수 있는 메소드(API)들을 확인할 수 있어요.
실행
엔티티에 선언한 필드대로 테이블이 생성된 것을 확인할 수 있습니다.
'Backend > Spring' 카테고리의 다른 글
Spring Boot @Async Callback 비동기처리 (4) | 2019.10.04 |
---|---|
Spring Boot Scheduler @Scheduled 사용 (0) | 2019.10.02 |
Spring Boot 예외처리 @ControllerAdvice - (3) (2) | 2019.08.28 |
Spring Boot 패키지 구조 @Controller @Service - (2) (0) | 2019.08.27 |
Spring Boot 프로젝트 생성 - (1) (0) | 2019.08.24 |