Skip to content

Commit 1577365

Browse files
committed
refactor: JPQL을 QueryDSL로 변환
1 parent 9cf6aca commit 1577365

File tree

6 files changed

+63
-17
lines changed

6 files changed

+63
-17
lines changed

src/main/java/org/dfbf/soundlink/domain/emotionRecord/repository/EmotionRecordRepository.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.dfbf.soundlink.domain.emotionRecord.repository;
22

33
import org.dfbf.soundlink.domain.emotionRecord.entity.EmotionRecord;
4+
import org.dfbf.soundlink.domain.emotionRecord.repository.dsl.EmotionRecordRepositoryCustom;
45
import org.dfbf.soundlink.domain.user.dto.response.EmotionRecordDto;
56
import org.dfbf.soundlink.domain.user.entity.User;
67
import org.springframework.data.domain.Page;
@@ -13,18 +14,12 @@
1314
import java.util.Optional;
1415

1516
@Repository
16-
public interface EmotionRecordRepository extends JpaRepository<EmotionRecord, Long> {
17+
public interface EmotionRecordRepository extends JpaRepository<EmotionRecord, Long>, EmotionRecordRepositoryCustom {
1718

1819
@Modifying(clearAutomatically = true)
1920
@Query("DELETE FROM EmotionRecord e WHERE e.user = :user")
2021
public void deleteByUser(@Param("user") User user);
2122

22-
@Query( "SELECT new org.dfbf.soundlink.domain.user.dto.response.EmotionRecordDto" +
23-
"(er.spotifyMusic.spotifyId, er.spotifyMusic.title, er.spotifyMusic.artist, er.spotifyMusic.albumImage, er.emotion, er.comment, er.createdAt) " +
24-
"FROM EmotionRecord er " +
25-
"WHERE er.user = :user" )
26-
List<EmotionRecordDto> findByUser(@Param("user") User user);
27-
2823
@Query("SELECT er FROM EmotionRecord er " +
2924
"JOIN FETCH er.user u " +
3025
"JOIN FETCH er.spotifyMusic sm " +
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.dfbf.soundlink.domain.emotionRecord.repository.dsl;
2+
3+
import org.dfbf.soundlink.domain.user.dto.response.EmotionRecordDto;
4+
import org.dfbf.soundlink.domain.user.entity.User;
5+
6+
import java.util.List;
7+
8+
public interface EmotionRecordRepositoryCustom {
9+
10+
List<EmotionRecordDto> findByUser(User user);
11+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package org.dfbf.soundlink.domain.emotionRecord.repository.dsl;
2+
3+
import com.querydsl.core.types.Projections;
4+
import com.querydsl.jpa.impl.JPAQueryFactory;
5+
import lombok.RequiredArgsConstructor;
6+
import org.dfbf.soundlink.domain.emotionRecord.entity.QEmotionRecord;
7+
import org.dfbf.soundlink.domain.user.dto.response.EmotionRecordDto;
8+
import org.dfbf.soundlink.domain.user.entity.User;
9+
import org.springframework.stereotype.Repository;
10+
11+
import java.util.List;
12+
13+
@Repository
14+
@RequiredArgsConstructor
15+
public class EmotionRecordRepositoryImpl implements EmotionRecordRepositoryCustom {
16+
17+
private final JPAQueryFactory jpaQueryFactory;
18+
19+
@Override
20+
public List<EmotionRecordDto> findByUser(User user) {
21+
return jpaQueryFactory
22+
.select(Projections.constructor(
23+
EmotionRecordDto.class,
24+
QEmotionRecord.emotionRecord.spotifyMusic.spotifyId,
25+
QEmotionRecord.emotionRecord.spotifyMusic.title,
26+
QEmotionRecord.emotionRecord.spotifyMusic.artist,
27+
QEmotionRecord.emotionRecord.spotifyMusic.albumImage,
28+
QEmotionRecord.emotionRecord.emotion,
29+
QEmotionRecord.emotionRecord.comment,
30+
QEmotionRecord.emotionRecord.createdAt
31+
))
32+
.from(QEmotionRecord.emotionRecord)
33+
.where(QEmotionRecord.emotionRecord.user.eq(user))
34+
.fetch();
35+
36+
}
37+
}

src/main/java/org/dfbf/soundlink/domain/user/repository/UserRepository.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22

33
import org.dfbf.soundlink.domain.user.dto.response.UserMyPageDto;
44
import org.dfbf.soundlink.domain.user.entity.User;
5+
import org.dfbf.soundlink.domain.user.repository.dsl.UserRepositoryCustom;
56
import org.springframework.data.jpa.repository.JpaRepository;
6-
import org.springframework.data.jpa.repository.Query;
7-
import org.springframework.data.repository.query.Param;
87

98
import java.util.Optional;
109

11-
public interface UserRepository extends JpaRepository<User, Long>, org.dfbf.soundlink.domain.user.repository.dsl.UserRepositoryCustom {
10+
public interface UserRepository extends JpaRepository<User, Long>, UserRepositoryCustom {
1211
boolean existsByEmail(String email);
1312

1413
boolean existsByNickname(String nickName);
@@ -17,10 +16,5 @@ public interface UserRepository extends JpaRepository<User, Long>, org.dfbf.soun
1716

1817
Optional<User> findById(Long id);
1918

20-
// 로그인관련
2119
Optional<User> findByLoginId(String loginId);
22-
23-
// 비밀번호만 조회
24-
@Query("Select u.password from User u where u.loginId =:loginId ")
25-
String findPasswordByLoginId(@Param("loginId")String loginId);
2620
}

src/main/java/org/dfbf/soundlink/domain/user/repository/dsl/UserRepositoryCustom.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,6 @@ public interface UserRepositoryCustom {
1111
UserMyPageDto findUserMyPageDtoByUserId(Long userId);
1212

1313
Optional<UserMyPageDto> findUserMyPageDtoByLoginId(@Param("loginId") String loginId);
14+
15+
String findPasswordByLoginId(String loginId);
1416
}

src/main/java/org/dfbf/soundlink/domain/user/repository/dsl/UserRepositoryImpl.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
public class UserRepositoryImpl implements UserRepositoryCustom {
1818
private final JPAQueryFactory jpaQueryFactory;
1919

20-
QUser user = QUser.user;
21-
QProfileMusic profileMusic = QProfileMusic.profileMusic;
2220

2321
@Override
2422
public UserMyPageDto findUserMyPageDtoByUserId(Long userId) {
@@ -57,4 +55,13 @@ public Optional<UserMyPageDto> findUserMyPageDtoByLoginId(String loginId) {
5755
.where(QUser.user.loginId.eq(loginId))
5856
.fetchOne());
5957
}
58+
59+
@Override
60+
public String findPasswordByLoginId(String loginId) {
61+
return jpaQueryFactory
62+
.select(QUser.user.password)
63+
.from(QUser.user)
64+
.where(QUser.user.loginId.eq(loginId))
65+
.fetchOne();
66+
}
6067
}

0 commit comments

Comments
 (0)