728x90
728x90
1. 환경 설정
- Spring Boot 프로젝트 생성: Spring Initializr를 이용하여 Spring Boot 프로젝트를 생성합니다.
- 의존성 추가: spring-boot-starter-data-jpa 의존성을 추가하여 JPA를 사용할 수 있도록 합니다.
- MySQL 설정: application.properties 또는 application.yml 파일에 MySQL 연결 정보를 설정합니다.
spring.datasource.url=jdbc:mysql://localhost:3306/your_database?serverTimezone=UTC
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.jpa.hibernate.ddl-auto=update
2. 엔티티 클래스 생성
엔티티 클래스는 데이터베이스 테이블과 매핑되는 자바 클래스입니다. @Entity 애노테이션으로 엔티티 클래스임을 선언하고, @Table 애노테이션으로 매핑할 테이블 이름을 지정합니다.
@Entity
@Table(name = "members")
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// getter, setter
}
- @Id: 엔티티의 기본 키를 나타냅니다.
- @GeneratedValue: 기본 키 생성 전략을 지정합니다. GenerationType.IDENTITY는 MySQL의 AUTO_INCREMENT와 같습니다.
728x90
3. Repository 인터페이스 생성
Repository 인터페이스는 데이터베이스 CRUD(Create, Read, Update, Delete) 작업을 위한 메소드를 선언합니다. Spring Data JPA는 이 인터페이스를 기반으로 구현체를 자동으로 생성합니다.
public interface MemberRepository extends JpaRepository<Member, Long> {
// 추가적인 쿼리 메소드를 정의할 수 있습니다.
List<Member> findByName(String name);
}
4. 서비스 클래스 생성
Repository를 사용하여 실제 비즈니스 로직을 구현합니다.
@Service
public class MemberService {
@Autowired
private MemberRepository memberRepository;
public Member save(Member member) {
return memberRepository.save(member);
}
public Member findById(Long id) {
return memberRepository.findById(id).orElse(null);
}
}
5. 테스트 코드 작성
@SpringBootTest
class MemberServiceTest {
@Autowired
private MemberService memberService;
@Test
void saveMember() {
Member member = new Member();
member.setName("John Doe");
Member savedMember = memberService.save(member);
assertThat(savedMember).isNotNull();
}
}
6. 실행 및 확인
Spring Boot 애플리케이션을 실행하고, 테스트 코드를 실행하여 결과를 확인합니다.
추가 설명
- JPQL: 객체 지향적인 쿼리 언어로, SQL과 유사하지만 객체를 대상으로 쿼리를 작성합니다.
- @Query: 커스텀 쿼리를 작성할 때 사용합니다.
- @NamedQuery: NamedQuery를 정의하여 반복적으로 사용하는 쿼리를 관리합니다.
- @Modifying: UPDATE, DELETE 쿼리를 실행할 때 사용합니다.
- @Transactional: 트랜잭션을 관리합니다.
실제 예제: 회원 목록 조회 및 저장
// 회원 목록 조회
List<Member> members = memberRepository.findAll();
// 이름으로 회원 조회
Member member = memberRepository.findByName("John Doe");
// 회원 저장
member.setName("Jane Doe");
memberRepository.save(member);
// 회원 삭제
memberRepository.deleteById(memberId);
더 자세한 내용
- Spring Data JPA 공식 문서: 다양한 기능과 예제를 확인할 수 있습니다.
- Hibernate 문서: Hibernate는 대표적인 JPA 구현체입니다. Hibernate 문서를 참고하여 JPA에 대한 더 깊이 있는 이해를 할 수 있습니다.
주의 사항
- 데이터베이스 스키마: 엔티티 클래스와 데이터베이스 스키마는 일치해야 합니다.
- Lazy Loading: 지연 로딩을 사용하면 성능을 향상시킬 수 있지만, 잘못 사용하면 N+1 문제가 발생할 수 있습니다.
- 캐싱: 캐싱을 사용하여 성능을 향상시킬 수 있습니다.
- 트랜잭션: 트랜잭션을 올바르게 관리해야 데이터 무결성을 보장할 수 있습니다.
728x90
728x90
'SpringBoot 를 배워보자' 카테고리의 다른 글
WAR 파일과 JAR 파일: 자바 개발자라면 꼭 알아야 할 차이점 (0) | 2024.11.02 |
---|---|
UN/EDIFACT 메시지를 처리하는 웹 서비스를 구현 (0) | 2024.10.21 |
JPA와 Spring (0) | 2024.10.19 |
Spring Cloud로 쉽고 빠르게 마이크로서비스 아키텍처 구축하기 (0) | 2024.10.19 |
스프링 부트 스타터: 개발 생산성을 높이는 강력한 도구 (0) | 2024.10.15 |