본문 바로가기
반응형

전체 글154

빌더 패턴(Builder Pattern) 쓰는 이유, 장점, 단점, 사용법 빌더 패턴을 쓰는 이유: 생성자를 여러개 만들기 번거러움, 다른 개발자와 협력할 때 생성자가 여러개면 어떤 생성자를 써야할지 헷깔릴 수 있음, 생성자를 만들어도 null 값을 일일이 넣어야할 경우가 있을 수 있는데 번거러움 빌더 패턴 장점: 생성자 만들기 편함 생성자 만들때 어떤 값을 넣을지 순서는 어떻게 할지 고려하지 않아도 됨 빌더 패턴 단점: 없는듯 빌더패턴 사용법(스프링): 1. 롬복(lombok) 설정 2. @SuperBuilder 어노테이션 사용 @Builder가 아닌 @SuperBuilder를 쓰는 이유 -> 부모인 BaseEntity를 상속받는 자식 객체인 Chef를 만들기 위함 -> 부모객체의 값도 입력하게 하기 위함 @Entity @Getter @AllArgsConstructor @No.. 2022. 11. 27.
Spring Security 로그인 문제 @Getter public class MemberContext extends User { private final Long id; private final LocalDateTime createDate; private final LocalDateTime modifyDate; private final String name; MemberContext에서 User를 상속받아 구현했다. 그런데 로그인이 안되는 에러가 생겼다. 디비에 저장이 안된건가 확인해봤다. 디비에는 잘 저장되어있다. 이유는 간단했다. MemberContext 클래스가 User를 상속받는데 User에 있는 username을 사용하기 때문이다. name이 아닌 username으로 사용해야했다. import org.springframework.se.. 2022. 11. 20.
AppointmentCommandService Class - Test Code I wrote test code per one class. I chose AppointmentCommandService to write test code. Before wrtting test code, I put data in database. I classified into 3 categories in one method. "given, when, then" given: something is given. when: something is done. then: verification @Test void appointmentStatusTest() throws Exception { //given Appointment appointment1 = appointmentRepository.findById(1L)... 2022. 11. 11.
AppointmenCommandService 클래스 - 테스트 코드 단일 클래스에 대해 짰으며 AppointmenCommandService 클래스에 대해 테스트 코드를 짜보았다. 데이터를 디비에 이미 넣어둔 상태로 테스트 코드를 작성을 진행하였다. 테스트코드는 given, when, then으로 나누어 작성하였다. given: 00이 주어짐 when: 00한 경우 then: 검증 @Test void appointmentStatusTest() throws Exception { //given Appointment appointment1 = appointmentRepository.findById(1L).get(); //when appointmentCommandService.updateAppointmentStatus(appointment1.getId(), AppointmentS.. 2022. 11. 11.
AppointmentQueryService Class - Test Code I wrote test code per one class. I chose AppointmentQueryService to write test code. Before wrtting test code, I put data in database. I classified into 3 categories in one method. "given, when, then" given: something is given. when: something is done. then: verification @Test void findAllAppointmentEntityListTest() throws Exception { //given Doctor doctor = doctorRepository.findById(5L).get(); .. 2022. 11. 10.
AppointmentQueryService 클래스 - 테스트 코드 단일 클래스에 대해 짰으며 AppointmentQueryService 클래스에 대해 테스트 코드를 짜보았다. 데이터를 디비에 이미 넣어둔 상태로 테스트 코드를 작성을 진행하였다. 테스트코드는 given, when, then으로 나누어 작성하였다. given: 00이 주어짐 when: 00한 경우 then: 검증 @Test void findAllAppointmentEntityListTest() throws Exception { //given Doctor doctor = doctorRepository.findById(5L).get(); //when List appointments = appointmentRepository.findByDoctorId(doctor.getId()); //then assertTha.. 2022. 11. 10.
[MySQL] DATE_FORMAT() 사용 - 컬럼 created_at에서 연, 월 나눠서 조회 컬럼 created_at 에서 연, 월 조회가 필요할 때가 있다. DATE_FORMAT()을 이용한다. 테이블 user_info created_at: LocalDateTime dtype: Member, Doctor select created_at, dtype from user_info; DATE_FORMAT() 이용 select DATE_FORMAT(created_at, '%y') YEAR, DATE_FORMAT(created_at, '%m') MONTH, dtype from user_info; 2022. 11. 5.
[JPA] OneToMany 관계일 때 컬렉션 조회를 통한 쿼리성능개선 다음은 닥터 질문 답변 게시판 상황이다. 멤버는 질문을 할 수 있고 닥터는 답변을 달 수 있다. 질문과 답변은 OneToMany 관계이다. 여기서 문제는 질문 하나에 대해서 답변이 N개가 달린다면 N번의 쿼리가 나간다는 점이다. 답변 N개를 한번에 조회할 수 있는 방법이 있을까? 컬렉션 조회를 이용하면 된다. - 닥터 질문 답변 게시판 답변 쿼리는 다음과 같다. 문제점: 답변 쿼리를 조회하면 답변한 닥터 쿼리가 3번 나가게 된다. 질문 하나에 대해서 닥터 3명이 답변을 단 상황에서 OneToMany이므로 쿼리가 3번 나갔다. 이러면 성능에 문제가 생기기에 컬렉션 조회를 이용한다. 해결방안: application.yml 파일을 수정하자. jpa: hibernate: ddl-auto: update # 어플리.. 2022. 11. 5.

반응형
반응형