Data Transfer Object로 데이터 전송 객체이다.
- 데이터 저장 담당 클래스
- 계층간에 데이터를 교환할 때 주로 사용된다.
- 객체지향에 매우 적합하기에 사용한다.
- 로직을 갖고 있지 않고 순수한 데이터 객체이다.
- 오직 getter,setter 메소드만을 가지고 있다.
DB에 접근하는 객체
하나로 쓰게 되면 변경된 값이 DB에 들어갈 수 있다. 그래서 변경이 많은 경우에는 Entity아 DTO를 구분하는게 좋다.
DB에 CRUD 명령을 실행하게 만드는 인터페이스
repository와 controller 사이 미들웨어
Jpa는 Java Persistence API의 약자이며, 자바 영속성 API를 뜻한다.
Object-Relational Mapping의 약자로 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다.
JPA를 더 추상화시켜 개발 용이성을 올려주는 인터페이스이다.
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findByUsername(String username);
}
DB에 접근할 수 있도록 자바에서 제공하는 API
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/datajpa
username: sa
password:
driver-class-name: org.h2.Driver
🗝️위의 개념을 알기 전에는 MySQL에서 Sql문을 통해서 테이블을 생성하고 Springboot와 DB를 연결하는 줄 알았다. 물론 그렇게 사용하는 경우도 있지만 우리는 지금 Spring Data JPA를 사용할 것이므로 query문을 직접 작성하지 않고 엔티티를 활용함으로써 테이블을 생성할 수 있다는 것을 새롭게 알게 됐다!
member 폴더 아래에 dto, entity, repository, service 폴더를 각각 생성해주자.
각각의 폴더에 들어가는 자바 클래스는 아래와 같다.
MemberDTO.java
@Getter
@Setter
@NoArgsConstructor //기본생성자 생성
@AllArgsConstructor // 모든 필드를 가지는 생성자 생성
@ToString
public class MemberDTO {
private Long id;
private String memberEmail;
private String memberPassword;
private String memberName;
}
MemberEntity.java
@Entity
@Setter
@Getter
@Table(name ="member_table")
public class MemberEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) //auto_increment
private Long id;
@Column(unique =true) //unique 제약조건 추가
private String memberEmail;
@Column
private String memberName;
}
Repository는 interface로 구현한다.
MemberRepository.java
public interface MemberRepository extends JpaRepository<MemberEntity, Long> {
}
MemberService.java
@Service
@RequiredArgsConstructor
public class MemberService {
private final MemberRepository memberRepository;
public void save(MemberDTO memberDTO) {
}
}
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'mysql:mysql-connector-java:8.0.33'
server:
port: 8081
# database 연동 설정
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
# 각자 PC에 만들어놓은 Database이름을 써야 합니다.
url: jdbc:mysql://localhost:3306/member_project?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
# mysql에 생성한 사용자 계정 정보를 써야 합니다.
username: user_woohee
password: 1234
thymeleaf:
cache: false
# spring data jpa 설정
jpa:
database-platform: org.hibernate.dialect.MySQLDialect
open-in-view: false
show-sql: true
hibernate:
ddl-auto: create

실행시키고 보니 mysql에 테이블이 생성된 것을 확인할 수 있다.
이렇게 DB연동까지 마쳤다.
DB연동이 안돼서 오류 수정하느라 시간이 많이 소요 됐다...
다음 포스트부터는 db에 값을 넣어보겠다!!