본문 바로가기

Develop Study/Spring38

(24.06.28)[11주차] QueryDSL과 SQL의 비교와 정리 QueryDSL, Query Domain Specific Language는 JPA 에서의 쿼리 전용 클래스로 Entity 의 매핑정도를 쿼리에 적합하도록 재구성을 해주는 기술로,JPA를 통해 Java에서 DB의 데이터를 SQL 처럼 쿼리문과 유사하게 메서드를 사용해서 DB 값을 조작할 수 있도록 한다.따라서 JPA 는 SQL의 DML과 매우 닮아있지만, 그렇다고 똑같이 사용하면 안되기 때문에필수적이 메서드를 비교하면서 나름 찾아보면서 정리할 수 있도록 한다.QueryDSL과 SQLJPAQueryFactory재구성한 Q클래스를 객체/함수 를 사용해서 쿼리로 작성, 실행미리 Config를 통해서 EntityManager로 Bean 등록이 되어있다고 가정해서 아래 예제들을 활용한다고 생각할 수 있어야함!@Pe.. 2024. 6. 28.
(24.06.27)[11주차] JPA 심화 강의 02 (마무리) 기존에 배웠던 JPA Repository 관련 심화 내용이 진행이 되었기 떄문에해당 TIL에는 JPQL과 QueryDSL 중심으로 간단히 정리 (자세한 정리와 실습 코드들은 Notion 연계) 이번에는 간단한 정보를 훝는 것만으로도 이해하는데 조금 어려웠기 때문에 일단은 학습 시간내에 최대한 간추리고추후,  QueryDSL은 한번더 자세하게 학습하여 다룰 수 있어야할 것JPA 심화 강의 간단정리더보기JPQL, Java Persistence Query LanguageTable 이 아닌 Entity(객체) 기준으로 작성하는 쿼리EntityMananger.createQuery()쿼리 문자열과 Entity 를 직접 넣어서 쿼리를 작성변경시 관련 쿼리 String 모두 수정해야런타임 에러가 발생하기 때문에 오류를.. 2024. 6. 27.
(24.06.26)[11주차] JPA 심화 강의 01 JPA 에 관하여 DB에서 부터  DB를 JPA 관련하여 다룰 수 있도록 강의와 학습이 진행되는 주간이므로TIL에는 간단하게 정리,자세한 것은 노션으로 나의 말과 실습코드의 양이 많기 때문에 인덱스 위주로 배운내용을 크게 점검하는 형식으로 정리JPA 심화 강의 간단정리더보기DB (H2)내장형 H2 DB를 설치해서 사용할 수 있음Server Mode직접 엔진을 외부에 설치하여 사용하는 방식In-memory Mode애플리케이션 내부의 엔진을 사용하는 방식Embedded Mode애플리케이션 내부의 엔진을 사용하되 DB가 유지가 되는 방식DB Driver애플리케이션과 데이터베이스 간의 통신을 중개하는 번역기같은 역할 JDBC DriverJDBC Driver ManagerConnection(연결) 객체 을 생성하.. 2024. 6. 26.
(24.06.25)[11주차] Spring Security의 User 권한 설정 팀 과제를 진행하면서 User 엔터티에 Role 부분에 USER와 ADMIN 두 권한을 분리를 했고,Spring Security 환경에서 ADMIN 유저에게 Controller단에서의 특정 API 접근을 제어하는 조건을 주고 싶었다.그래서 학습한 내용중에 가볍게 넘어가서 기억하지 못하는 내용 그리고 추가적으로 알아본 내용을 합쳐서 User 권한에 따라 권한을 설정하는 방법을 간단하게 정리를 하고자 한다. (팀 과제가 오늘까지 진행을 했어야했기 때문에 간단히 알아보고 스스로 학습해서 정리하는 시간만 가지는 것으로 한다.)Spring Security의 User 권한 설정가정Spring Security의 Authentication Manager 를 통해 로그인을 한 유저를 통해 이미 인가/검증이 끝난 상태로,.. 2024. 6. 25.
(24.06.21)[10주차] CrudRepository & Delete 쿼리 메서드 Controller-Service-Repository 의 3 Layer Structure에 사용되는 Repository는 interface로, JpaRepository 를 extends 받는다.따라서 Service단에서는 주입받은 Repository에 쿼리메서드를 상요할 수 있는데, 지금까지는 findBy-- 형태의 일종의 Select-where 쿼리와 유사한 것만 사용하고 그 밖에는 Optional로 만들어서 쓸 수 밖에 없었는데, 팀과제를 하면서 내가 스스로 만들어낸 쿼리메서드가 아니라 이미 CRUD 에 특화된 CrudRepository를 활용할 수 있도록 코드를 짠 팀원을 보면서 코드 리뷰할 때 궁금증이 생겼고 이에 대해 조금 알아보고 정리하려고 한다. CrudRepositoryJpaReposito.. 2024. 6. 21.
(24.06.18)[10주차] Reflection & ReflectionTestUtils을 통한 필드 다루기 @Entity@Getter@Table(name = "users")public class User {... @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(unique = true, nullable = false, name = "username") private String username; @Column(nullable = false) private String password; @Column(nullable = false) private String name; @Column(unique = true, nullable = false) private S.. 2024. 6. 18.
(24.06.17)[10주차] Validator 객체 생성과 테스트 코드에서의 활용 Validation을 사용하면 단순하게 예외가 발생되고 던져지는 것 뿐만아니라, Validator라는 객체로 Validation적용이 된 필드를 검증할 수도 있다. 테스트 코드를 작성하는 과제에서 사용하기 위해 미리 찾아보고 학습한 것으로 정리 Validator 객체 & Validator로 테스트코드에서의 검증엔터티 또는 DTO에서의 필드를 Spring Boot의 Validation의 Annotation을 통해 코드가 작성이 되었고, @Validated와 @Valid를 통해서 필드의 유효성이 코드 진행에서 검사가 진행이 될 수 있음그렇다면, 이것을 따로 검사할 수 있는 방법, 그리고 이 방법을 통해서 Validation에 대해 필드의 검증을 테스트 코드에서 쓸 수 있는 방법으로 Validator 객체를 .. 2024. 6. 17.