
[ UserRepository 쿼리 작성 ]
@RequiredArgsConstructor
@Repository
public class UserRepository {
private final EntityManager em;
@Transactional
public User save(User user) {
em.persist(user);
return user;
}
return이 필요 없긴 한데… return 넣어주자! 재사용? 위해?
원래는 이런 코드였는데…


이 코드가

이렇게 간소하게 바뀜!
[ DTO 만들기 ]
package shop.mtcoding.blog.user;
import lombok.Data;
public class UserRequest {
@Data
public static class JoinDTO {
private String username;
private String password;
private String email;
public User toEntity() {
return User.builder()
.username(username)
.password(password)
.email(email)
.build();
}
} //@Builder 있어야 사용 가능
}
잠깐! User 엔티티에 @Builder가 있는지 확인했나요?
package shop.mtcoding.blog.user;
import jakarta.persistence.*;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;
import java.sql.Timestamp;
@NoArgsConstructor
@Data
@Table(name = "user_tb")
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(unique = true)
private String username;
private String password;
private String email;
@CreationTimestamp // pc -> db (날짜주입)
private Timestamp createdAt;
@Builder
public User(Integer id, String username, String password, String email, Timestamp createdAt) {
this.id = id;
this.username = username;
this.password = password;
this.email = email;
this.createdAt = createdAt;
}
}
[ UserController ]
@RequiredArgsConstructor
@Controller
public class UserController {
private final UserRepository userRepository;
private final HttpSession session;
@PostMapping("/join")
public String join(UserRequest.JoinDTO requestDTO) {
userRepository.save(requestDTO.toEntity());
return "redirect:/login-form";
}
끝
+ [ 회원가입 됐을 때, 바로 로그인 되게 바꿔주자! ] → UX 상승!
회원가입이 됐으니까 바로 세션을 만들어주면 된다!
@RequiredArgsConstructor
@Controller
public class UserController {
private final UserRepository userRepository;
private final HttpSession session;
@PostMapping("/join")
public String join(UserRequest.JoinDTO requestDTO) {
User sessionUser = userRepository.save(requestDTO.toEntity());
session.setAttribute("sessionUser", sessionUser);
return "redirect:/";
}
회원가입 하자마자 세션을 줘서 바로 로그인이 자동으로 됨!! → UX 좋아짐!!


바로 로그인 됨!!!!
Share article