본문 바로가기

Study/Spring15

@Query로 update문 작성하기 | Spring Spring boot JPA 쿼리 어노테이션 Group 테이블과 User 테이블은 1:N 관계를 가지고 있습니다. 이미 생성되어있는 User 엔티티에 Group 엔티티의 정보를 업데이트하는 과정을 설명하고자 합니다. public interface UserRepository extends CrudRepository { @Modifying @Transactional @Query(value = "UPDATE user_tb u set u.group_id = :groupId where u.user_id = :userId", nativeQuery = true) void updateGroupId(long groupId, long userId); } @Modifying - SELECT가 아님을 명시하는 어노테이션입니다. - UPDATE, DELETE, INSER.. 2022. 4. 27.
User 엔티티를 외래키로 가진 Post 엔티티 조회하기 | Spring Spring boot JPA Study 이번 글은 외래키를 가진 Post 엔티티의 전체 조회와 상세 조회를 구현한 글입니다. 전체 조회 API는 모든 회원의 글 전체를 조회할 수 있고, 특정 회원의 글 전체를 조회할 수 있습니다. 1. 게시글 목록 기능 구현 issues #41 Pull request #53 - 해당 링크로 코드를 확인할 수 있습니다 1. Response DTO 반환할 DTO를 생성한다. @Getter public class PostResponseDto { private String title; private String content; private String userName; private LocalDateTime createdAt; } 2. PostController @GetMapping public List getPo.. 2022. 2. 16.
User 엔티티를 외래키로 가진 Post 엔티티 추가하기(INSERT) | Spring Spring boot JPA Study ✔ Java 11 ✔ Gradle 7 ✔ Spring boot 2.6.3 2. 게시글 추가 기능 Issues #40 Pull request #51 - 풀 리퀘스트 링크를 통해 해당 코드를 확인할 수 있습니다. 1. PostController @PostMapping("/{userpk}") public void createPost(@PathVariable(name = "userpk") @Valid long userPk, @RequestBody @Valid CreatePostRequestDto createPostRequestDto) { boardMinjService.createPost(userPk, createPostRequestDto); } @PostMapping("/{userpk}") user 엔티티가 p.. 2022. 2. 16.
JPA Auditing 사용하여 엔티티 설계하기 | Spring Spring boot JPA Study ✔ Java 11 ✔ Gradle 7 ✔ Spring boot 2.6.3 ✔ 목표 JPA Auditing 사용하여 생성 날짜, 수정 날짜의 컬럼 자동화 1. 엔티티 설계 https://github.com/ywoo-srin-minj/spring_study/issues/39 디렉토리 구조 ├─entity │ │ BaseEntity.java │ │ │ ├─name │ │ ├─boardName │ │ │ │ BoardName.java │ │ │ │ │ │ │ └─repository │ │ │ BoardNameRepository.java │ │ │ │ │ └─userName │ │ │ UserName.java │ │ │ │ │ └─repository │ │ UserNameRepository.java │ │ Use.. 2022. 2. 15.
Controller 통합 테스트 코드 | Spring Spring boot JPA Study ✔ Java 11 ✔ Gradle 7 ✔ Spring boot 2.6.3 통합 테스트란? DB에 접근하거나 전체 코드와 다양한 환경이 제대로 작동하는지 확인하는데 필요한 모든 작업을 수행할 수 있다. 테스트 프레임워크로 JUnit을 사용했다. 1. 테스트 파일 생성 Controller 메소드 이름을 우클릭 후 Generate > Test를 눌러 테스트 파일을 자동으로 생성할 수 있다. 2. 테스트 파일 세팅 @Transactional @SpringBootTest class UserMinjControllerTest { private MockMvc mockMvc; @Autowired private WebApplicationContext context; @BeforeEach void setUp() { mock.. 2022. 2. 12.
[Spring | test | H2] test에서 H2 DB 연결하기 ✔ Java 11 ✔ Gradle 7 ✔ Spring boot 2.6.3 test code에서 더미 데이터를 사용하기 위해 h2 db를 연결하게 되었다. 1. application.yml 추가 test > resources > application.yml spring: datasource: url: jdbc:h2:mem:testdb driverClassName: org.h2.Driver username: sa password: h2: console: enabled: true profiles: active: local jpa: database-platform: org.hibernate.dialect.H2Dialect database: h2 hibernate: ddl-auto: update open-in-v.. 2022. 2. 12.
[Spring boot | MySQL] Intellij에 MySQL 연결하기 | 모든 프로젝트에서 연결된 디비 연결하기 ✔ Java 11 ✔ Gradle 7 ✔ Spring boot 2.6.3 1. 로컬에서 db 생성 및 기본 DB 정보 파악 mysql> CREATE DATABASE tmc_db; Query OK, 1 row affected (0.00 sec) 참고 생성한 db 이름 : tmc_db 2. 의존성 추가 build.gradle runtimeOnly 'mysql:mysql-connector-java' 3. Database 찾기 ‘Database’를 검색하거나 오른쪽에 보면 해당 탭을 찾을 수 있다. 4. MySQL 연결하기 1. MySQL 찾기 Data Source > MySQL을 눌러 창을 열어준다. 2. DB 정보 입력하기 Name [사용자 지정] 자신이 알아볼 수 있는 이름으로 지정해준다. 아무렇게 적어도.. 2022. 2. 11.
Controller 예외 처리 | Spring Spring boot JPA Study ✔ Java 11 ✔ Gradle 7 ✔ Spring boot 2.6.3 Controller 예외 처리 Issues #26 Controller 예외 처리 Pull request #33 1. Error Response @Getter @AllArgsConstructor public class ErrorResponse { private int status; private String message; } 밑의 json 형태로 반환하기 위해 response entity를 생성한다. { "status" : 200, "message" : "ok" } 2. Enum - ErrorCode @Getter @AllArgsConstructor public enum ErrorCodeEnum { USER_NOT_FOUND(Htt.. 2022. 2. 11.
[Spring | Gradle 7] QueryDSL 적용 ✔ Java 11 ✔ Gradle 7 ✔ Spring boot 2.6.3 My GitHub Commit 1. gradle 추가 김영한님의 querydsl 적용 방법으로 적용했다. ref. https://www.inflearn.com/questions/219898 build.gradle // querydsl 추가부분 buildscript { dependencies { classpath("gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.10") } } plugins { id 'org.springframework.boot' version '2.6.3' id 'io.spring.dependency-management' version '1.0.11.RELE.. 2022. 2. 10.