TIL ~ 24.04.05

20240216 TIL

wlsds00_ 2024. 2. 29. 06:46

대용량 트래픽 프로젝트

queryDSL 강의를 수강하면서 이전에 작업했던 투두 앱 프로젝트에 기능을 추가해보았다.

 

QueryDslSupport

abstract class QueryDslSupport {

    @PersistenceContext
    protected lateinit var entityManager: EntityManager

    protected val queryFactory: JPAQueryFactory
        get() {
            return JPAQueryFactory(entityManager)
        }
}

 

UserController

    @GetMapping("/search")
    @PreAuthorize("hasRole('USER') or hasRole('ADMIN')")
    fun searchUserList(@RequestParam(value = "userName") userName: String): ResponseEntity<List<UserResponse>> {
        return ResponseEntity.status(HttpStatus.OK).body(userService.searchUserList(userName))
    }

 

UserServiceImpl

    override fun searchUserList(userName: String): List<UserResponse> {
        return userRepository.searchUserListByName(userName).map { it.toUserResponse() }
    }

 

 

CustomUserRepository / UserRepository / UserRepositoryImpl

interface CustomUserRepository {
    fun searchUserListByName(userName: String): List<UserEntity>
}

interface UserRepository: JpaRepository<UserEntity, Long>, CustomUserRepository {
    fun findByUserId(userId: Long): UserEntity?
    fun findByUserEmail(userEmail: String): UserEntity?
}

@Repository
class UserRepositoryImpl: QueryDslSupport(), CustomUserRepository {

    private val user = QUserEntity.userEntity

    override fun searchUserListByName(userName: String): List<UserEntity> {
        return queryFactory.selectFrom(user)
            .where(user.userName.containsIgnoreCase(userName))
            .fetch()
    }
}

 

 

마무리

강의를 따라해서 결과물이 잘 나오긴 했지만 해당 내용을 내가 다 이해하고 학습했다는 느낌은 아직 들지 않았다...

로그인 기본 틀을 작성하긴 했는데 내일 다시 작성해야 할것같다.

더 잘 하고싶다는 욕심과 지금 가진 능력이 충돌하면서 뭘 어떻게 해야 더 잘하는거지? 하고 길을 잃은 기분이다..ㅠㅠ

팀장님이 배려해주셔서 사실상 개인 공부시간을 추가로 얻은거나 마찬가지인데 조금이라도 시간을 잘 쓰고싶다.

'TIL ~ 24.04.05' 카테고리의 다른 글

20240220 TIL  (0) 2024.02.29
20240219 TIL  (0) 2024.02.29
20240215 TIL  (0) 2024.02.15
20240214 TIL  (0) 2024.02.14
20240213 TIL  (0) 2024.02.13