Skip to content

Commit d06a0d0

Browse files
committed
round1: 리뷰 적용 - JPA repo 구현체 분리
1 parent 86a8205 commit d06a0d0

11 files changed

Lines changed: 97 additions & 19 deletions

File tree

apps/commerce-api/src/main/java/com/loopers/domain/point/Point.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import lombok.Getter;
1010

1111
@Entity
12-
@Table(name = "point")
12+
@Table(name = "tb_point")
1313
@Getter
1414
public class Point extends BaseEntity {
1515
@Column(name = "user_id", nullable = false, updatable = false, unique = true)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.loopers.domain.point;
2+
3+
import java.util.Optional;
4+
5+
public interface PointRepository {
6+
Optional<Point> findByUserId(Long userId);
7+
8+
void save(Point point);
9+
}

apps/commerce-api/src/main/java/com/loopers/domain/point/PointService.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,25 @@
1111
@RequiredArgsConstructor
1212
@Service
1313
public class PointService {
14-
private final PointJpaRepository pointJpaRepository;
14+
private final PointRepository pointRepository;
1515

1616
@Transactional
1717
public void createPoint(Long userId) {
1818
Point point = Point.create(userId);
19-
pointJpaRepository.save(point);
19+
pointRepository.save(point);
2020
}
2121

2222
@Transactional
2323
public Long chargePoint(Long userId, int amount) {
24-
Point point = pointJpaRepository.findByUserId(userId)
24+
Point point = pointRepository.findByUserId(userId)
2525
.orElseThrow(() -> new CoreException(ErrorType.NOT_FOUND, "포인트 정보를 찾을 수 없습니다."));
2626
point.charge(amount);
27-
pointJpaRepository.save(point);
27+
pointRepository.save(point);
2828
return point.getAmount();
2929
}
3030

3131
@Transactional(readOnly = true)
3232
public Optional<Long> getCurrentPoint(Long userId) {
33-
return pointJpaRepository.findByUserId(userId).map(Point::getAmount);
33+
return pointRepository.findByUserId(userId).map(Point::getAmount);
3434
}
3535
}

apps/commerce-api/src/main/java/com/loopers/domain/user/User.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import org.apache.commons.lang3.StringUtils;
1111

1212
@Entity
13-
@Table(name = "user")
13+
@Table(name = "tb_user")
1414
@Getter
1515
public class User extends BaseEntity {
1616
protected User() {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.loopers.domain.user;
2+
3+
import java.util.Optional;
4+
5+
public interface UserRepository {
6+
Optional<User> findByUserId(String userId);
7+
8+
Optional<User> findByUserIdForUpdate(String userId);
9+
10+
boolean existsUserByUserId(String userId);
11+
12+
User save(User user);
13+
}

apps/commerce-api/src/main/java/com/loopers/domain/user/UserService.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,27 @@
1111
@RequiredArgsConstructor
1212
@Service
1313
public class UserService {
14-
private final UserJpaRepository userJpaRepository;
14+
private final UserRepository userRepository;
1515

1616
@Transactional
1717
public User registerUser(String userId, String email, String birthday, String gender) {
1818
// 이미 등록된 userId 인 경우, 예외를 발생시킨다.
19-
if (userJpaRepository.existsUserByUserId(userId)) {
19+
if (userRepository.existsUserByUserId(userId)) {
2020
throw new CoreException(ErrorType.CONFLICT, "이미 존재하는 사용자 ID 입니다.");
2121
}
2222
User user = User.create(userId, email, birthday, gender);
23-
return userJpaRepository.save(user);
23+
return userRepository.save(user);
2424
}
2525

2626
@Transactional(readOnly = true)
2727
public Optional<User> findByUserId(String userId) {
28-
return userJpaRepository.findByUserId(userId);
28+
return userRepository.findByUserId(userId);
2929
}
3030

3131
// find by user id with lock for update
3232
@Transactional
3333
public Optional<User> findByUserIdForUpdate(String userId) {
34-
return userJpaRepository.findByUserIdForUpdate(userId);
34+
return userRepository.findByUserIdForUpdate(userId);
3535
}
3636

3737
}

apps/commerce-api/src/main/java/com/loopers/domain/point/PointJpaRepository.java renamed to apps/commerce-api/src/main/java/com/loopers/infrastructure/point/PointJpaRepository.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
package com.loopers.domain.point;
1+
package com.loopers.infrastructure.point;
22

3+
import com.loopers.domain.point.Point;
34
import org.springframework.data.jpa.repository.JpaRepository;
4-
import org.springframework.stereotype.Repository;
55

66
import java.util.Optional;
77

8-
@Repository
98
public interface PointJpaRepository extends JpaRepository<Point, Long> {
109

1110
Optional<Point> findByUserId(Long userId);
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.loopers.infrastructure.point;
2+
3+
import com.loopers.domain.point.Point;
4+
import com.loopers.domain.point.PointRepository;
5+
import lombok.RequiredArgsConstructor;
6+
import org.springframework.stereotype.Component;
7+
8+
import java.util.Optional;
9+
10+
@RequiredArgsConstructor
11+
@Component
12+
public class PointRepositoryImpl implements PointRepository {
13+
private final PointJpaRepository pointJpaRepository;
14+
15+
@Override
16+
public Optional<Point> findByUserId(Long userId) {
17+
return pointJpaRepository.findByUserId(userId);
18+
}
19+
20+
@Override
21+
public void save(Point point) {
22+
pointJpaRepository.save(point);
23+
}
24+
}

apps/commerce-api/src/main/java/com/loopers/domain/user/UserJpaRepository.java renamed to apps/commerce-api/src/main/java/com/loopers/infrastructure/user/UserJpaRepository.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
package com.loopers.domain.user;
1+
package com.loopers.infrastructure.user;
22

3+
import com.loopers.domain.user.User;
34
import jakarta.persistence.LockModeType;
45
import org.springframework.data.jpa.repository.JpaRepository;
56
import org.springframework.data.jpa.repository.Lock;
67
import org.springframework.data.jpa.repository.Query;
7-
import org.springframework.stereotype.Repository;
88

99
import java.util.Optional;
1010

11-
@Repository
1211
public interface UserJpaRepository extends JpaRepository<User, String> {
1312
Optional<User> findByUserId(String userId);
1413

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.loopers.infrastructure.user;
2+
3+
import com.loopers.domain.user.User;
4+
import com.loopers.domain.user.UserRepository;
5+
import lombok.RequiredArgsConstructor;
6+
import org.springframework.stereotype.Component;
7+
8+
import java.util.Optional;
9+
10+
@RequiredArgsConstructor
11+
@Component
12+
public class UserRepositoryImpl implements UserRepository {
13+
private final UserJpaRepository userJpaRepository;
14+
15+
@Override
16+
public Optional<User> findByUserId(String userId) {
17+
return userJpaRepository.findByUserId(userId);
18+
}
19+
20+
@Override
21+
public Optional<User> findByUserIdForUpdate(String userId) {
22+
return userJpaRepository.findByUserIdForUpdate(userId);
23+
}
24+
25+
@Override
26+
public boolean existsUserByUserId(String userId) {
27+
return userJpaRepository.existsUserByUserId(userId);
28+
}
29+
30+
@Override
31+
public User save(User user) {
32+
return userJpaRepository.save(user);
33+
}
34+
}

0 commit comments

Comments
 (0)