대용량 트래픽 프로젝트
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 |