inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업 클럽 0기] 2주차 발자국

킹재
0

이번 주에 배운 내용

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id = null;

    @Column(nullable = false, length = 20, name = "name")
    private String name;

    private Integer age;

    protected User() {
    }
    // 생략
}
public interface UserRepository extends JpaRepository<User, Long> {
}
@Service
public class UserServiceV2 {
    private final UserRepository userRepository;

    public UserServiceV2(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public void saveUser(UserCreateRequest request) {
        User user = userRepository.save(new User(request.getName(), request.getAge()));
        System.out.println("id: " + user.getId());
    }
    // 생략
}
@Service
public class UserServiceV2 {
    private final UserRepository userRepository;

    public UserServiceV2(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    @Transactional
    public void saveUser(UserCreateRequest request) {
        User user = userRepository.save(new User(request.getName(), request.getAge()));
        System.out.println("id: " + user.getId());
    }

    @Transactional(readOnly = true)
    public List<UserResponse> getUsers() {
        return userRepository.findAll().stream()
                .map(user -> new UserResponse(user.getId(), user.getName(), user.getAge()))
                .collect(Collectors.toList());
    }
    // 생략
}

 

미션

[6일차 - 어노테이션]

@Repository
public class FruitMemoryRepository implements FruitRepository {
    // 생략
}
@Repository
@Primary
public class FruitMySqlRepository implements FruitRepository {
    // 생략
}

 

회고

그간 MyBatis 같은 SQL Mapper만 써오다가 JPA를 이용해 애플리케이션을 개발했습니다. 기능을 추가할 때마다 SQL문도 일일이 만드는 과정이 번거로운데 JPA는 그럴 필요가 없으니 확실히 개발 생산성을 높일 수 있었습니다. 다만 새로운 유형의 기술이고 난이도도 있는 편이라 이에 적응하는 데는 시간이 걸릴 것 같습니다.

 

오늘도 함께 스터디 중인 여러분들을 존중하고 존경하며 여기서 마무리하도록 하겠습니다.

백엔드 워밍업클럽

답변 0