본문 바로가기
반응형

전체 글67

[Intellij] 프로그램 실행 시, 콘솔 로그에 Running 정보 뜨는 경우(Executing task '.main()'...) gradle 프로젝트 생성 후, 프로그램 실행 시 위와 같이 콘솔 로그가 보이는 경우 없애는 방법은 다음과 같다. File -> Setting -> Build, Execution, Deployment -> Build Tools -> Gradle -> Runner 에서 Delegate IDE build/run actions to Gradle 체크 해제 참고 : https://intellij-support.jetbrains.com/hc/en-us/community/posts/360003473380-Intellij-2019-1-Disable-Logging-In-Console-When-Program-Is-Running 2019. 8. 6.
[Spring] @RestControllerAdvice 서버단에서 로직을 처리하는 과정에서 발생하는 예외를 통합관리하고, 그 결과를 클라이언트에 반환해준다. 설정방법 @RestConroller가 붙어있는 api컨트롤러에서 발생하는 예외를 캐치하겠다는 의미 구현부 클래스 내부의 메서드들은 특정 Exception에 대해 처리하는 로직이 들어있다. @ExceptionHandler(CannotUpdateException.class) 는 CannotUpdateException (직접 만든 RunTimeException)이 발생했을 경우, 해당 메서드를 실행하겠다는 의미이다. @ResponseStatus 는 말그대로 응답헤더의 Http Status Code를 지정해주는 것이다. ErrorMessage는 클라이언트에게 반환하는 객체로, 예외 내용을 담고 있다. excep.. 2019. 7. 16.
[Spring] AOP 1. AOP(aspect oriented programming) 관점 지향 프로그래밍 공통된 부가기능을 따로 떼어두고 사용 기능을 핵심 로직과 공통 부가로직으로 구분 코드 밖에서 설정 OOP의 기본단위는 Class 라면, AOP의 기본단위는 Aspect 예시 : 로그인 인증, 로깅, 트랜잭션 처리 2. AOP 구성요소 aspect 공통 기능(부가 기능)을 가지는 대상 advice와 pointcut 으로 구성 pointcut(어디에서) + advice(무엇을 할 것인가) advice 공통 기능(부가 기능)을 담은 구현체 aspect의 세부 내용 예시 : 로그인 체크 기능 (SessionCheck) pointcut advice가 적용될 타겟 지정 기능 타겟 : 어떤 클래스(컨트롤러)의 어느 joinPoint.. 2019. 6. 26.
[Spring] DI (Dependency Injection) DI(Dependency Injection) 1. 객체 의존성 A객체가 B객체를 참조하고 있다면, A객체는 B객체에 의존하고 있다 (의존성을 가진다). 다음 코드의 문제점은? public class Customer { private Food food; public Customer() { this.food = new Pizza("치즈 피자"); } public void eat() { System.out.println("냠냠"); food.showRemainder(); } }Customer 객체는 Food 객체(Pizza)에 의존한다. (new Pizza("치즈 피자")) 이럴 경우, Food 객체를 변경할 경우 의존한 Customer 객체도 변경해야한다. 즉, 하나의 클래스가 바뀌면 의존한 다른 클래스까지.. 2019. 6. 24.
[Intellij] import.sql 한글 깨짐 1) file - setting - file encodings에서 다음과 같이 UTF-8로 설정 2) 그래도 안될 경우, import.sql 파일의 인코딩 타입을 x-windows-949 바꾼다. [출처 : https://kkotkkio.tistory.com/39] 2019. 6. 23.
[JPA] 지연 로딩/즉시 로딩 1. 프록시 객체 가짜 객체 지연로딩 기능을 사용하기 위해 쓰임 실제 객체에 대한 참조를 가짐 2. 지연로딩 연관된 엔티티를 실제 사용할 때 조회 answer.getQuestion().getName() 처럼 질문 엔티티를 실제 사용하는 시점에 JPA가 SQL을 호출하여 질문 엔티티를 조회한다. 설정 : @ManyToOne(fetch = FetchType.LAZY) 예제 (Test Code) 1) Answer Entity @ManyToOne의 fetch타입을 지연로딩(FetchType.LAZY)로 지정한다. 2) Answer 엔티티 조회 test코드에서 answerRepository.findById(1L)를 수행하여, 해당 answer 엔티티를 조회한다. 2_1) 지연로딩 실행 SQL sql문을 보면, 단.. 2019. 6. 20.
[Spring] Logback 사용법(gradle) 1) gradle dependency 추가 runtimeOnly 'net.rakugakibox.spring.boot:logback-access-spring-boot-starter:2.7.1' 2) application.properties logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE 3) resource 패키지 내 logback.xml 파일 생성 %d{HH:mm:ss.SSS} [%-5level] [%thread] [%logger{36}] - %m%n 4) resoure 패키지 logback-access.xml 파일 생성 %d{HH:mm:ss.SSS} [%-5level] [%thread] [%logger{36}] - %m%n 2019. 6. 18.
[JPA] 트랜잭션 1. 트랜잭션 데이터를 접근, 변경하는 일련의 작업을 하나로 묶는 작업단위 작업의 완전성 보장 작업의 성공/실패가 분명 2. ACID (트랜잭션 성질) 원자성(Atomicity) 하나의 트랜잭션 내의 실행한 작업들은 하나로 간주 성공 아니면 실패 (모 아니면 도) 일관성(Consistency) 언제나 일관성 있는 데이터베이스 상태 유지 고립성,독립성(Isolation) 실행중인 각각의 트랜잭션은 서로가 간섭없이 독립적으로 진행 서로 영향 X 지속성(Durability) 트랜잭션이 성공적으로 수행되면 결과는 영원히 저장(반영) 3. Commit, Rollback 연산 Commit 하나의 트랜잭션이 성공적으로 종료 (DB 반영) 변경사항 저장 Rollback 하나의 트랜잭션이 비정상적으로 종료시 수행 변경사.. 2019. 5. 29.
[JPA] 영속성 컨텍스트 (Persistence context) 1. 영속성(Persistence) 데이터를 생성한 프로그램이 종료되도, 데이터는 사라지지 않는 특성 JPA에서 영속성이라 함은 Entity를 영구적으로 저장해주는 특성을 말함 2. 영속성 컨텍스트(Persistence context) Entity를 영구적으로 저장하는 환경(영역) 엔티티 매니저(Entity Manager)를 하나 생성할 때 영속성 컨텍스트 하나가 생성됨 엔티티 매니저로 엔티티를 CURD함 (영속성 컨텍스트를 관리함) 특징 1. 1차 캐시 - 영속성 컨텍스트에 존재하는 캐시 - 엔티티를 식별자 값(@id)로 구분 - Key-value형태인 맵으로 저장 (@id는 key값, value는 Entity 인스턴스) - 영속상태의 엔티티는 반드시 식별자값을 가짐 2. 동일성 보장 - 동일한 객체 .. 2019. 5. 28.
반응형