본문 바로가기

SPRING/Spring 활용

[스프링부트| 스프링부트와 JPA 활용 1 | 웹 애플리케이션 개발 | 상품 도메인 개발] 상품 리포지토리,서비스 개발 @Repository // 이 클래스를 스프링의 리포지토리 컴포넌트로 등록하여 데이터 액세스 역할을 명시@RequiredArgsConstructor // Lombok 라이브러리의 어노테이션으로 final 또는 @NonNull 필드에 대한 생성자를 자동으로 생성public class ItemRepository { private final EntityManager em; // JPA의 EntityManager를 주입받아 데이터베이스 연산을 관리 public void save(Item item) { // Item 객체를 저장하거나 업데이트하는 메소드 if (item.getId() == null) { // Item의 ID가 null일 경우, 즉 새로 생성된 객체일 경우 .. 더보기
[스프링부트| 스프링부트와 JPA 활용 1 | 웹 애플리케이션 개발 | 상품 도메인 개발] 상품 엔티티 개발(비즈니스 로직 추가) @Entity // 이 클래스를 데이터베이스 테이블과 매핑할 엔티티 클래스임을 지정@Inheritance(strategy = InheritanceType.SINGLE_TABLE) // 단일 테이블 상속 전략을 사용하여 이 클래스와 상속받는 모든 클래스를 하나의 테이블에 저장@DiscriminatorColumn(name = "dtype") // 상속받는 클래스를 구분할 때 사용할 컬럼명을 'dtype'으로 지정@Getter // 클래스 필드의 getter 메소드를 자동으로 생성 (Lombok 라이브러리)public abstract class Item { // 이 클래스가 추상 클래스임을 명시, 직접 인스턴스화할 수 없고 상속을 통해서만 사용 @Id // 해당 필드를 테이블의 기본 키(primary k.. 더보기
[스프링부트| 스프링부트와 JPA 활용 1 | 웹 애플리케이션 개발 | 회원 도메인 개발] 회원 기능 테스트 @RunWith(SpringRunner.class) // 스프링 부트 테스트를 위한 JUnit 러너 설정@SpringBootTest // 스프링 부트 애플리케이션 컨텍스트를 로드하는 테스트를 위한 설정@Transactional // 테스트 클래스에 트랜잭션 적용, 테스트 완료 후 롤백public class MemberServiceTest { @Autowired MemberService memberService; // 멤버 서비스 의존성 자동 주입 @Autowired MemberRepository memberRepository; // 멤버 리포지토리 의존성 자동 주입 @Autowired EntityManager em; // 엔티티 매니저 의존성 자동 주입 @Test public .. 더보기
[스프링부트| 스프링부트와 JPA 활용 1 | 웹 애플리케이션 개발 | 회원 도메인 개발] 회원 서비스 개발 @Service // 스프링 컨테이너에 서비스 계층의 빈으로 등록@Transactional(readOnly = true) // 클래스 수준에서 읽기 전용 트랜잭션을 적용@RequiredArgsConstructor // final 필드나 @NonNull 필드에 대한 생성자를 자동으로 생성public class MemberService { private final MemberRepository memberRepository; // 의존성 주입을 통한 리포지토리 접근 /** * 회원 가입 */ @Transactional // 데이터 변경을 포함하므로 디폴트 readOnly = false 트랜잭션 적용 public Long join(Member member) { .. 더보기
[스프링부트| 스프링부트와 JPA 활용 1 | 웹 애플리케이션 개발 | 회원 도메인 개발] 회원 리포지토리 개발 회원 기능 -회원 등록 -회원 조회상품 기능 -상품 등록 -상품 수정-상품 조회주문 기능-상품 주문-주문 내역 조회 -주문 취소개발 순서: 서비스, 리포지토리 계층을 개발하고, 테스트 케이스를 작성해서 검증, 마지막에 웹 계층 적용@Repository // 스프링 컨테이너에 이 클래스가 데이터 리포지토리 역할을 한다고 표시public class MemberRepository { @PersistenceContext // JPA 엔티티 매니저를 자동으로 주입받기 위한 어노테이션 private EntityManager em; // 엔티티 매니저 객체 선언, 데이터베이스 조작을 담당 public void save(Member member) { em.persist(member); //.. 더보기
[스프링부트| 스프링부트와 JPA 활용 1 | 웹 애플리케이션 개발 | 도메인 분석 설계] 엔티티 클래스 개발 @Entity // 이 클래스를 데이터베이스의 엔티티로 선언@Getter // Lombok 라이브러리를 사용하여 모든 필드의 getter 메서드 자동 생성@Setter // Lombok 라이브러리를 사용하여 모든 필드의 setter 메서드 자동 생성public class Member { // 회원을 나타내는 클래스 @Id // 이 필드가 테이블의 기본 키임을 선언 @GeneratedValue // 기본 키 값이 데이터베이스에 의해 자동으로 생성되어야 함을 선언 @Column(name = "member_id") // 데이터베이스의 컬럼 이름을 "member_id"로 지정 private Long id; // 회원 식별자 private String name; // 회원의 이름 .. 더보기
[스프링부트| 스프링부트와 JPA 활용 1 | 웹 애플리케이션 개발 | 도메인 분석 설계] 도메인 모델과 테이블 설계 더보기
[스프링부트| 스프링부트와 JPA 활용 1 | 웹 애플리케이션 개발 | 프로젝트 환경설정] JPA와 DB설정, 동작확인 spring: # Spring 프레임워크 관련 전반적인 설정을 시작하는 키 datasource: # 데이터 소스 설정을 정의하는 섹션 url: jdbc:h2:tcp://localhost/~/jpashop # 데이터베이스 연결 URL, 여기서는 H2 데이터베이스를 지정 username: sa # 데이터베이스 접속을 위한 사용자 이름 password: # 데이터베이스 접속을 위한 비밀번호, 비워두면 비밀번호 없음 driver-class-name: org.h2.Driver # JDBC 드라이버 클래스 명 jpa: # JPA (Java Persistence API) 관련 설정 hibernate: # 하이버네이트 관련 설정 ddl-auto: create # 데이터베이스 스키.. 더보기