자바 예외에 대해 예외 설 명 Object 예외도 객체다. 모든 객체의 최상위 부모는 Object 이므로 예외의 최상위 부모도 Object 이다. Throwable 최상위 예외. Throwable 하위에 Exception 과 Error 가 있다. Error 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외 (언체크 예외) 이미 처리가 불가능한 오류 이므로 이 오류를 잡으려 해서는 안된다. Exception 체크 예외 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외 Exception 과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외 RuntimeException 런타임 예외 컴파일러가 체크 하지 않는 언체크 예외 RuntimeException 과 그 자식..
프록시 방식의 AOP 한계 @Transactional 어노테이션을 사용하는 트랜잭션 AOP는 프록시를 사용하는데 이 프록시를 사용하면 메서드 내부 호출에 프록시를 적용할 수 없는 한계를 갖습니다. 어떠한 한계가 생기는지 자세히 알아보기 위해 먼저 스프링 컨테이너에서 트랜잭션 프록시가 등록되는 것을 그림으로 봅시다. 스프링 컨테이너에 트랜잭션 프록시 등록 @Transactional 애노테이션이 특정 클래스나 메서드에 하나라도 있으면 있으면 트랜잭션 AOP는 위 그림처럼 프록시를 만들어서 스프링 컨테이너에 등록합니다. 이 때, 실제 TxService 객체 대신에 프록시인 TxService$$CGLIB 를 스프링 빈에 등록합니다. 그리고 프록시는 내부에 실제 TxService 를 참조합니다. 여기서 핵심은 실..
@Entity @Getter @Setter public class Order { @Id @GeneratedValue private Long id; @Column private String username; @Column private String payStatus; } Order라는 Entity 객체를 매핑하여 테스트를 돌렸을 시 아래와 같은 오류가 발생했습니다. 알아보니 이러한 오류가 발생한 문제는 다음과 같습니다. 오류 원인 Hibernate 는 JPA 엔티티 클래스를 보고 데이터베이스 테이블을 자동 생성해 줍니다. 만약 엔티티 클래스의 이름이 Item 이라면 Item이라는 테이블을 생성해줍니다. 그런데 여기서 문제가 있습니다. 데이터베이스 키워드/예약어(ORDER, GROUP, SELECT, WHE..
프레임워크(Framwork) 이미 완성되어 있는 뼈대, 틀을 의미하며, 우리는 제공된 틀안에서 주어진 규칙을 지켜가며 사용합니다. 쉽게 예를 들면 우리가 성공해서 건물을 하나 올린다고 생각해봅시다. 건물으 세운다면 그저 우리가 원하는데로 막 지울 수 있는 것이 아니라 나라에서 정한 건축법에 따라 그 규칙에 맞게 지을 수 있습니다. Java의 Spring에서 규칙 하나를 예를 들면 정적 리소스는 resources/static 폴더에, 동적 리소스는 resources/template 폴더에 담는 규칙이 있죠. 우리는 이미 완성되어 있는 프레임워크를 정해진 규칙에 맞게 사용하여 필요한 기능을 직접 구현할 필요 없이 원하는 기능을 구현하는데 더 집중할 수 있습니다. 프레임워크 예 Java 서버 개발에 사용되는 ..
QueryDSL이란 ? SQL, JPQL 등을 코드로 작성할 수 있도록 해주는 프레임워크로 쿼리를 type-safe(컴파일시 에러 체크 가능)하게 Java 코드로 작성할 수 있습니다. QueryDSL은 동적 쿼리를 아주 편리하게 작성할 수 있어 복잡한 동적 쿼리를 사용해야 할 때 QueryDSL을 사용하고 단순한 경우에는 Spring Data JPA를 사용합니다. QueryDSL은 JPA가 제공하는 JPQL을 코드로 작성할 수 있도록 도와주는 빌더 역할을 하기 때문에 JPQL의 문법에 대한 이해가 필요합니다. SQL과 JPQL의 문제점 QueryDSL을 이해하기 전에 먼저 SQL과 JPQL의 문제점을 알아봅시다. # SQL String sql = "select id, item_name, price, qu..
문제 설명 제한사항 입출력 예 Solution.py 초항 K가 5일 때 콜라츠 추측으로 계산하면 다음과 같은 수열이 나옵니다. [5, 16, 8, 4, 2, 1] 나온 수열 대로 그래프를 그려보면 아래와 같은 그림이 나옵니다. 여기서 각 꼭지점마다 선을 그어서 사다리꼴 사각형을 만들 수 있습니다. 여기서 기억나지 않는 사람들 위해 사다리꼴 사각형이란 무엇인지에 대해 설명하자면 평행한 변이 있는 사각형, 즉 마주 보는 한 쌍의 변이 서로 평행한 사각형을사다리꼴이라고 합니다. 이제 문제의 답을 구하기 위한 각 구간의 넓이를 구해야하는데 그림을 보면 사다리꼴 넓이로 구간의 넓이를 구할 수 있어 보입니다. 각 사다리골 사각형들의 넓이를 구해 구간의 넓이를 구해 봅시다. 사다리꼴 넓이는 ((윗변+아랫변) * 높이..