우주먼지
article thumbnail
Application Deployment & Build
Framework/Spring 2022. 11. 15. 09:51

💡 Application Deployment & Build IDE Tool이 없는 환경 Windows PS C:/{direction}> .\gradlew bootjar Git Project Directory 이동 ./gradlew build java -jar {project-name}.jar server-properties.active="" Profile을 이용한 DB 설정 정보 포함 application-{name}.yml 형식의 환경 별 파일 생성 후 DB별로 설정 정보 분리 서버 배포 PaaS CF CLI 사용 - cf push acloudyspringtime -p target/{file-name}.jar IaaS AWS Beanstalk, Container Registry, Code Deploy ..

article thumbnail
API Documentation (Spring RestDocs)
Framework/Spring 2022. 11. 12. 19:40

💡 API Documentation Swagger에 비해 Spring RestDocs는 기능 구현과 관련된 코드에 API 문서 생성을 위한, 어노테이션같은 어떠한 정보도 추가되지 않음 클라이언트에서 REST API 기반의 백엔드 어플리케이션의 사용을 위한 정보 API Documentation의 자동화가 필요한 이유 사람의 실수로 인한 업데이트된 정보의 누락 수기 작성의 비효율성 생산성 향상 Swagger vs Spring Rest Docs Swagger 장점 - API 요청 툴로써 기능 사용 가능 단점 - Swagger는 기능 구현과 관계없는 많은 어노테이션 사용으로 인한 코드 간결성 저하 Spring Rest Docs 장점 - 테스트와 구현한 기능에서 정보가 하나라도 일치하지 않으면 테스트 Failed..

article thumbnail
Testing (Mockito)
Framework/Spring 2022. 11. 8. 08:50

💡 Test JUnit은 표준 테스트 프레임워크이다 기능 테스트 테스트의 범위 중 제일 큰 테스트, 어플리케이션 전체에 걸친 테스트 통합 테스트 테스트 주체가 어플리케이션 제작 개발팀 or 개발자 단위 테스트, 클라이언트 툴 없음 슬라이스 테스트 어플리케이션을 특정 계층으로 나눠서 테스트 단위 테스트 어플리케이션의 핵심 비즈니스 로직 메소드의 독립적인 테스트 단위 테스트의 F.I.R.S.T 원칙 Fast Independent Repeatable Self-validating Timely given - when - then Pattern given 테스트에 필요한 전제조건 포함 when 테스트 동작 지정 then 테스트 결과 검증, 값 비교 (Assertion) Hamcrest를 사용한 Assertion A..

article thumbnail
분산 트랜잭션
Framework/Spring 2022. 11. 8. 07:27

💡 분산 트랜잭션 스프링 부트는 Atomikos 임베디드 트랜잭션 매니저를 통해 여러 XA 리소스에 걸친 분산 JTA 트랜잭션을 지원하며, 올바른 순서대로 기동,종료 할 수 있도록 스프링 빈에 적절한 depends-on 설정을 적용해준다. JTA 환경을 감지하면 스프링의 'JtaTranscationManager'를 사용해 트랜잭션을 관리한다 자동 설정된 JMS, DataSource, JPA 빈은 XA 트랜잭션을 지원하도록 업그레이드 된다 Atomikos 트랜잭션 로그는 어플리케이션의 홈디렉토리안의 transcation-logs 디렉토리에 기록 이를 위해서 application.properties에 spring.jta.log-dir 프로퍼티를 설정하면 사용디렉토리 custom 가능 2개 이상의 네트워크 상..

article thumbnail
선언형 트랜잭션
Framework/Spring 2022. 11. 4. 20:08

💡 Transaction ACID 원칙 1. 원자성 (Atomicity) All or Nothing 보장 2. 일관성 (Consistency) 어떤 값 증가시 연관된 값 일관성있게 증가 3. 격리성 (Isolation) 각 트랜잭션 당 각각 독립적 실행 4. 지속성 (Durability) 트랜잭션 완료 후 결과 지속 보장 트랜잭션 커밋 & 롤백 Commit 완료된 작업 최종 DB 반영 - 트랜잭션 종료 RollBack 작업중 문제 발생 시 수행작업 취소 -> 원상태 복귀 조회 메소드에는 @Transaction의 Attr을 readOnly=true 로 설정함으로써 성능 최적화 과정을 거치도록 한다 트랜잭션 전파 (Transaction Propagation) @Transactional의Attribute Pr..

article thumbnail
JPA & Hibernate (Java Persistence API)
Framework/Spring 2022. 11. 1. 15:00

💡 JPA Memo JPA 란? 객체와 테이블의 패러다임 불일치 해결을 위한 영속성(Persistence) ORM 프레임워크 Persistence Context에 객체와 DB테이블의 매핑정보를 저장 이렇게 보관된 엔티티정보는 DB 테이블에 CRUD를 위해 사용됨 동작원리 요약 begin() 트랜잭션 시작 객체를 persist로 영속성 컨텍스트에 저장하면 (1차캐시, 지연sql저장소에 등록) commit을 하면 지연 sql 저장소에 자동으로 변환되있던 (대기중인) sql문 실행으로 인해 db 등록 수정 - setter 사용 제거 - remove() 사용 (DB가 아닌 영속성 컨텍스트에서 제거) //i 1. 영속성 컨텍스트에만 엔티티 저장 private void example01() { //i ex01 Me..

Spring Data JDBC 기반 도메인 엔티티 & 테이블 설계
Framework/Spring 2022. 10. 27. 16:00

💡 Aggregate 비슷한 업무 도메인들의 집합 Aggregate Root = 각각의 도메인 대표, root의 key를 다른 도메인이 foreign키로 가지고 있음 Aggregate Root 선정 기준 = 다른 도메인과 연관성이 있는 도메인 (1:N) 설계중 Aggregate Root역할을 할 엔티티 클래스를 잘 선정해야함 엔티티 설계 1:N의 관계에서 1은 N의 객체를 참조할 수 있도록 List를 멤버변수로 가진다 N:N의 관계에서, 1:N - N:1로 변환하도록 N쪽의 객체를 참조하도록 1쪽에서 List를 멤버 변수로 가짐 ex) private AggregateReference userId; 객체 참조 = 테이블에서의 외래키 참조 테이블 설계 각 테이블의 컬럼은 엔티티의 멤버변수와 1:1 매핑됨 테..

검색 태그