Back-end

    [JPA] JPA (Java Persistence API)란?

    🧐 JPA란? 자바 객체와 DB테이블 간의 매핑을 처리하기 위한 ORM 표준 💡 요소 엔티티 DB에서 지속적으로 저장된 데이터를 자바 객체에 매핑 메모리 상에 자바 객체의 인스턴스 형태로 존재하며 EntitiyManager에 의해 DB의 데이터와 동기화 엔티티 매니저 필요에 따라 Enitity와 데이터베이스의 데이터를 동기화한다. EntitiyManager에서 제공하는 Entity 조작 API를 이용해 Entity에 대해 CRUD 작업을 할 수 있다. 영속성 컨텍스트 ( Persistence Context ) 엔티티를 영구적으로 저장하는 환경 엔티티를 저장하거나 검색할 때 엔티티 매니저는 영속성 컨텍스트에서 엔티티를 저장하고 관리 엔티티 매니저를 생성할 때 영속성 컨텍스트가 만들어진다. 영속성 컨텍스트에..

    [Spring Boot] Rest API 구현 (Feat. spring date rest)

    💡 Rest API 란? 참고 : https://withseungryu.tistory.com/100 💡 Spring data rest 란? spring-data-rest, a recent addition to the spring-dataproject, is a framework that helps you expose your entities directly as RESTful webservice endpoints. Unlike rails, grails or roo it does not generate any code achieving this goal. spring data-rest supports JPA, MongoDB, JSR-303 validation, HAL and many more. It is ..

    Rest API?

    Spring Boot - What is Rest API? 💡 Rest란? ​ 웹과 같은 분산 하이퍼미디어 시스템에서 사용하는 통신 네트워크 아키텍처 HTTP와 URI의 단순하고 간결한 장점을 계승한 Network 아키텍쳐 참고 : https://meetup.toast.com/posts/92 💡 Rest가 만들어진 목적 구성요소 상호작용의 규모 확장성 인터페이스의 범용성 구성요소의 독립적인 배포 중간적 구성요소를 이용한 응답 지연 감소, 보안 강화, 레거시 시스템 인캡슐레이션 Rest API 설계하기 자원 : URI 행위 : HTTP 메소드 표현 : 리소스에 대한 표현 (HTTP Message Body) 💡 URI 설계 URI는 URL을 포함한 개념 URL : 웹상의 파일 위치를 표현 -> http://l..

    [Spring Boot] YAML 파일 매핑하기 (Feat. @ConfigurationProperties)

    💡 YAML 파일이란? 위키 참조 더보기 YAML은 XML, C, 파이썬, 펄, RFC2822에서 정의된 e-mail 양식에서 개념을 얻어 만들어진 '사람이 쉽게 읽을 수 있는' 데이터 직렬화 양식이다. 2001년에 클라크 에반스가 고안했고, Ingy dot Net 및 Oren Ben-Kiki와 함께 디자인했다. YAML이라는 이름은 "YAML은 마크업 언어가 아니다 (YAML Ain't Markup Language)” 라는 재귀적인 이름에서 유래되었다. 원래 YAML의 뜻은 “또 다른 마크업 언어 (Yet Another Markup Language)”였으나, YAML의 핵심은 문서 마크업이 아닌 데이터 중심에 있다는 것을 보여주기 위해 이름을 바꾸었다. 오늘날 XML과 JSON이 데이터 직렬화에 주로 ..

    [Spring] 트랜잭션 문제 해결 - 트랜잭션 동기화 기법

    🧐 트랜잭션 동기화 기법이란? 트랜잭션을 시작하기 위해 만든 Connection 오브젝트를 특별한 저장소에 보관하면서, 호출되는 DAO의 메소드에서 앞서 저장된 Connection을 가져다 사용하는 기법. 즉, 하나의 트랜잭션을 동기화 방식을 통해 이 사이에 실행된 메소드들은 동기화된 트랜잭션을 사용하게 하는 기법. UserService의 트랜잭션 원자성 문제를 해결하기 위해 트랜잭션 동기화 기법을 사용해 해결해보자 스프링은 트랜잭션 동기화 관리 클래스인 TransactionSynchronizationManager를 제공해준다. 따라서 위 클래스의 메소드들을 통해 동기화를 해보자. TransactionSynchronizationManager 메소드들 👉 initSynchronization : 트랜잭션 동..

    [Spring] 트랜잭션 문제 찾기 (feat. 트랜잭션 경계설정 구조)

    🧐 레벨 업그레이드 기능을 구현했을 때, 업그레이드 변경 과정 중에 에러가 발생한다면? 에러가 나기 전까지 유저들은 업그레이드가 될까? 한번 일부로 업그레이드 과정 중에 에러를 발생시켜 강제적인 상황을 만들어 확인해보자! @Test public void upgradeAllOrNothing() { UserService testUserService = new TestUserService(users.get(3).getId()); testUserService.setUserDao(this.userDao); userDao.deleteAll(); for(User user : users) userDao.add(user); try { testUserService.upgradeLevels(0); fail("TestUser..