SpringBoot/데이터베이스 연동
엔티티(Entity)와 리포지토리(Repository) 만들기
DEVLIB
2025. 4. 14. 10:47
728x90
예제 시나리오
"회원(Member)" 정보를 관리하는 예제
우리는 다음과 같은 정보를 데이터베이스에 저장하려 합니다:
필드 | 설명 |
id | 고유 ID (자동 생성) |
name | 회원 이름 |
이메일 주소 | |
createdDate | 생성일시 |
1. Entity 클래스 만들기
package com.example.demo.entity;
import jakarta.persistence.*;
import java.time.LocalDateTime;
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // 자동 증가
private Long id;
private String name;
@Column(unique = true)
private String email;
private LocalDateTime createdDate = LocalDateTime.now();
// 기본 생성자 (필수)
protected Member() {}
// 생성자
public Member(String name, String email) {
this.name = name;
this.email = email;
}
// Getter/Setter (롬복 쓰면 @Getter, @Setter로 대체 가능)
public Long getId() { return id; }
public String getName() { return name; }
public String getEmail() { return email; }
public LocalDateTime getCreatedDate() { return createdDate; }
public void setName(String name) { this.name = name; }
public void setEmail(String email) { this.email = email; }
}
기본 생성자는 JPA에서 필수입니다. 꼭 만들어 주세요!
2. Repository 인터페이스 만들기
package com.example.demo.repository;
import com.example.demo.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface MemberRepository extends JpaRepository<Member, Long> {
// 메서드 이름만으로 쿼리 자동 생성
Optional<Member> findByEmail(String email);
// 추가로 필요 시 더 만들 수 있음 (findByName, existsByEmail 등)
}
JpaRepository<T, ID>를 상속하면 save(), findById(), findAll() 등을 바로 사용할 수 있습니다.
3. 사용 예시 (서비스나 테스트에서 호출)
@Service
public class MemberService {
private final MemberRepository memberRepository;
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
public void register(String name, String email) {
Member member = new Member(name, email);
memberRepository.save(member);
}
public Member getMember(String email) {
return memberRepository.findByEmail(email)
.orElseThrow(() -> new RuntimeException("회원 없음"));
}
}
application.yml (설정 예시 - H2 DB)
spring:
datasource:
url: jdbc:h2:mem:testdb
driver-class-name: org.h2.Driver
username: sa
password:
jpa:
hibernate:
ddl-auto: update
show-sql: true
실행하면 Member 테이블이 자동 생성되고, 콘솔에 SQL이 출력됩니다.
추가 팁
- @Column으로 제약 조건 지정 가능 (nullable = false, length = 100, unique = true 등)
- @Table(name = "members")로 테이블 이름 지정 가능
- LocalDateTime 필드는 @PrePersist를 활용해 자동 세팅도 가능
마무리 요약
구성 요소 | 설명 |
@Entity | DB 테이블로 매핑되는 자바 클래스 |
@Id + @GeneratedValue | 기본 키 + 자동 증가 설정 |
JpaRepository | CRUD 및 쿼리 메서드를 자동 제공 |
사용 흐름 | Controller → Service → Repository → DB |
LIST