스프링부트

해당 글은 지난 글에 이어서 작성하는 글이며, 김영한님의 '스프링 DB 1편 - 데이터 접근 핵심 원리' 강의를 참고했습니다.  멀티스레드 환경에서의 트랜잭션 동작 - feat. 테스트 코드최근에 한 프로젝트에서 테스트 코드를 짜다가 트러블 슈팅 과정에서 새롭게 안 사실이 있어서 블로그를 작성하게 되었다. "동일한 이메일로 사용자가 동시에 가입할 경우, 하나의 계정만 생성judyalwayswantscarrot.tistory.com   지난번 글에서 "멀티스레드 환경에서의 트랜잭션 동작"을 살펴보았다!  아래와 같이 테스트 코드를 짰을때, 메인 스레드인 테스트가 시작되는 메서드와 내부에서 생성된 3개의 스레드들에서 트랜잭션이 제대로 동작하고 있는지 확인보았다. 결과적으로는 메인 스레드인 테스트 메서드에서는..
최근에 한 프로젝트에서 테스트 코드를 짜다가 트러블 슈팅 과정에서 새롭게 안 사실이 있어서 블로그를 작성하게 되었다. "동일한 이메일로 사용자가 동시에 가입할 경우, 하나의 계정만 생성되는지"에 대한 테스트 코드를 짰다. 이를 위해 멀티스레드 환경에서 동시에 같은 이메일로 유저를 저장했을 때, 하나의 계정만 생성되었는지 확인하고자 했다. 처음 구성한 코드는 아래와 같다.1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950@DataJpaTestclass MemberRepositoryTest {     @Autowired    private MemberRepository memberRepositor..
📍 HTTP 메소드에서의 멱등성 🍀 한 줄 요약: 요청(Request)을 한 번을 호출하든 여러 번을 호출하든 그 결과가 같음을 의미, 🍀 여러 번 동일한 요청을 보냈을 때, 서버에 미치는 의도된 영향이 동일한 경우 동일한 요청을 한번 보내는 것과 여러번 연속으로 보내는 것이 같은 효과를 가지고, 서버의 상태도 동일하게 남을 때 해당 HTTP 메서드가 멱등성을 가진다고 말할 수 있다. (응답 상태 코드가 아닌 서버의 상태와 관련이 된다!) HTTP 스펙에 따르면, GET, PUT, DELETE 메소드는 멱등성을 보장해야한다고 나와있다고 한다. 한 번 하나씩 살펴보도록 하자. 1️⃣ GET 메소드 : 서버에 존재하는 리소스를 단순히 읽어오기만 하는 메소드이기 때문에 당연히 여러번 수행되어도 결과값은 변하지..
📍 this와 this() 키워드 🍀 한 줄 요약 : this는 인스턴스 자신을 가르키는 참조 변수이고 this()는 생성자를 뜻한다. 세미나에서 다뤘던 아래의 예시를 살펴보면, Person 생성자에서 인스턴스 변수 값을 세팅하기위해 this.name = name가 같이 사용한 것을 볼 수 있다. public class Person { private String name; private int age; private String sex; public void walk() { System.out.println("사람이 걷습니다."); } public Person(String name, int age, String sex) { this.name = name; this.age = age; this.sex = ..
*인프런 '김영한'님의 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 강의를 듣고 정리한 내용입니다. 1.프로젝트 설정 프로젝트 생성 *3.0.5버전은 java 17에서 지원, java11 지원 안 함. 라이브러리 살펴보기 hikariCP 커넥션 풀 → 찾아보기 라이브러리 추가(from. 강의자료) Validation (JSR-303 validation with Hibernate validator) 모듈을 꼭! 추가해주세요. build.gradle에 다음 코드 추가 implementation 'org.springframework.boot:spring-boot-starter-validation' JUnit4 추가 (안 하면 JUnit5로 동작) testImplementation("org.ju..
스터디 2회차 ✅ 범위 : 쿼리 메소드 기능 - 스프링 데이터 JPA 페이징과 정렬까지 단축키 → shift + F6: 한 꺼번에 이름 바꾸기 1. 쿼리 메소드 기능 메소드 이름으로 쿼리 생성 1.1 범위 지정 쿼리 메소드를 사용해 조건에 맞는 데이터를 쉽게 조회할 수 있다. 쿼리 메소드에서 제공하는 키워드를 사용해 정확한 범위를 지정할 수 있다. 1.2 쿼리 메소드 필터 조건(Distinct, And, Or 등..) Spring Data JPA - Reference Documentation 1.3예시 public interface MemberRepository extends JpaRepository { List findByEmailAndName(String email, String name); List..
인프런 강의 중 김영한님의 실전! 스프링 데이터 JPA 강의를 들으면서 정리한 내용입니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-JPA-%EC%8B%A4%EC%A0%84/dashboard 실전! 스프링 데이터 JPA - 인프런 | 강의 스프링 데이터 JPA는 기존의 한계를 넘어 마치 마법처럼 리포지토리에 구현 클래스 없이 인터페이스만으로 개발을 완료할 수 있습니다. 그리고 반복 개발해온 기본 CRUD 기능도 모두 제공합니다. www.inflearn.com UMC에서 진행한 프로젝트 리팩토링을 위해서 팀원들과 JPA 스터디를 진행중이다! 1주차는 섹션 3까지 학습했다. 서로 강의를 듣고 ..