반응형 개발공부102 JPA Auditing JPA Auditing 테이블에 들어가야하는 필수적인 Column을 쉽게 사용할 수 있도록 제공하는 기능 JPA Auditing 사용 이유 엔티티마다 공통적으로 필요한 값 ex) 등록일, 수정일 을 매번 구현해야한다면 실수가 생기기 쉽다. => 이를 자동화할 수 있다. (aduit: 감시하다) @MappedSuperclass : 엔티티의 공통 매핑정보 @EntityListeners : 해당 클래스에 auditing 기능을 포함 @CreatedDate : Entity가 생성되어 저장될 때 시간이 자동 저장 @LastModifiedDate : Entity값을 변경할 때 시간이 Update @Column(updatable=false) : 실수로 값을 바꿔도 업데이트 되지 않는다. @PrePersist : IN.. 2023. 1. 21. troubleshooting - Failed to load ApplicationContext 테스트케이스 작성 후 실행 시 에러가 발생하는데 알 수 없었다. java.lang.IllegalStateException: Failed to load ApplicationContext 환경변수로 사용하고 있는 부분이 있는데 실행/디버그 수정에 환경변수를 선언해줘야한다! 2023. 1. 19. Spring Data JPA 주의사항 - 영속성 컨텍스트 주의할점 영속성 컨텍스트 및 Dirty Checking 개념을 이해하지 못하고 사용하면 데이터 손실 및 성능 이슈가 있을 수 있다. JPA의 모든 데이터 편경은 트랜잭션 안에서 실행된다. @Transactional 즉, 트랜잭션 밖에서 데이터 변경은 반영되지 않는다. 영속성 컨텍스트 Persistence Context 애플리케이션과 데이터베이스 사이에서 엔티티와 레코드의 괴리를 해소하는 기능과 객체를 보관하는 기능을 수행한다.. entity를 저장하고 관리하는 저장소 (가상의 데이터베이스 역할) 이미 영속상태인 경우 merge를 통해 덮어쓴다. 영속 객체 Persistence Object 엔티티 객체가 영속성 컨텍스트에 들어와 JPA의 관리 대상이 되는 시점부터의 객체 영속성 컨텍스트는 세션 단위의 생명.. 2023. 1. 19. Spring Data JPA, DAO, DTO, Entity, Repository 란? Spring Data JPA 자바 어플리케이션에서 관계형 데이터베이스 사용하는 방식을 정의한 인터페이스 Spring에서 JPA를 더 쉽고 편하게 사용할 수 있도록 도와준다. JPA를 한단계 추상화시킨 Repository 인터페이스 제공 build.gradle 의존성 추가, 인터페이스를 정의하면 JPA의 CRUD 사용이 가능하다. implementation 'org.springframework.boot:spring-boot-starter-data-jpa' public interface PharmacyRepository extends JpaRepository { } 스프링부트 어플리케이션 구조 DAO (Data Access Object) DB의 data에 접근하기 위한 객체 직접 DB에 접근하여 데이터 CR.. 2023. 1. 16. 테스트 코드 작성 프레임워크 - Spock 테스트 코드의 중요성 기능에 대한 불확실성 감소, 기능을 안전하게 보호 ex) A 기능을 추가 개발하여 오픈했는데, 기존 B 기능이 문제가 발생 개발 초기에 문제 발견에 도움을 줌 -> 개발 시간 단축 ex) 배포후 문제 발생 -> 원인파악 -> 다시 테스트 -> 코드수정 = 야근 Spock Groovy 언어를 이용하여 테스트 코드를 작성할 수 있는 프레임워크 Junit 보다 간결한 코드 - 주석으로 블록을 구분하고 메소드 이름 또한 제약사항이 많이 존재 given, when, then 코드 블록을 명확히 구분 -> 가독성이 좋다 메소드명을 문자열로 선언 가능하다 Spock 작성 순서 테스트 클래스는 Groovy 클래스로 생성, Specification 클래스를 상속 받는다. feature(테스트메서드).. 2023. 1. 4. [PHP] redis 라이브러리 - Predis 알아보기 PHP에서 Redis 장비로의 접근을 위한 Redis Client 라이브러리이다. php >= 5.3 이 요구된다. Github 링크 Readme를 잘 보고 필요한것을 공부해야 한다. GitHub - predis/predis: A flexible and feature-complete Redis client for PHP. A flexible and feature-complete Redis client for PHP. - GitHub - predis/predis: A flexible and feature-complete Redis client for PHP. github.com 특징 redis-cluster 지원 (Redis >= 3.0) redis-sentinel 지원 client-side shardin.. 2022. 12. 30. [springboot] redis, mariadb docker-compose redis Dockerfile FROM redis:6 ENV TZ=Asia/Seoul database Dockerfile FROM mariadb:10 ENV TZ=Asiz/Seoul docker-compose-local.yml 나는 3306이 사용중인 포트라서 3308로 했다. version: "3.8" # 파일 규격 버전 services: # 이 항목 밑에 실행하려는 컨테이너들을 정의 sch-pharm-redis: # 서비스명 container_name: sch-pharm-redis # 컨테이너 명 build: dockerfile: Dockerfile context: ./redis image: zerome240/sch-pharm-redis ports: - "6379:6379" sch-pharm-data.. 2022. 12. 18. [springboot] Spring Profile Spring Profile 어플리케이션 설정을 local / develop / production 별로 다르게 적용할 때 사용 👉 application-{profile}.yml spring boot는 어플리케이션이 실행될 때 자동으로 application.properties 또는 application.yml을 찾는다. gradle/src/main/resources/application.yml spring: profiles: active: local # default profile group: local: - common prod: - common --- spring: config: activate: on-profile: common 2022. 12. 18. [springboot] jar 파일 생성 및 도커 파일 작성하기 build.gradle에서 jar 파일 이름 변경 bootJar { archiveFileName = 'app.jar' } gradle wrapper를 이용한 jar 파일 생성 #window $ gradlew build #linux $ ./gradlew build 기본 경로는 프로젝트의 build/libs/*.jar 트러블 슈팅 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > invalid source release: 11 모든 설정관련해서 jdk 를 11버전으로 맞췄는데..도 안돼서 찾다가 //sourceCompatibility = '11' 해당 라인을 주석처리했더니 .. 2022. 12. 17. 이전 1 ··· 6 7 8 9 10 11 12 다음 728x90 반응형