전체 글 168

[Spring] Cache (@Cacheable, @CachePut, @CacheEvict)

Cache 사용 이유 캐시의 사용은 반복적으로 동일한 결과를 반환하는 경우에 용이하다고 한다. 지속적으로 같은 결과를 반환하는데도 DB에 접속하게 되면 DB의 장애가 생길 가능성이 높아지기 때문이다. Cache 사용 방법 1. @EnableCaching 추가 캐시를 사용하고자 하는 클래스에 @EnableCaching 이라는 어노테이션을 추가한다. @EnableCaching @Configuration public class CacheConfig { ... } 2. 캐시 매니저 빈 추가 ConcurrentMapCacheManager: Java의ConcurrentHashMap을 사용해 구현한 캐시를 사용하는 캐시매니저 SimpleCacheManager: 기본적으로 제공하는 캐시가 없어 사용할 캐시를 직접 등록..

[JPA] FetchType.LAZY vs FetchType.EAGER

FetchType.LAZY (지연 로딩) FetchType.EAGER (즉시 로딩) 둘의 근본적인 차이점은 EAGER의 경우는 Member를 조회하면 연관 관계에 있는 Team이 함께 조회되고, LAZY의 경우 Member를 조회하면 Member만 조회해오고 나머지 데이터는 미룬다. 다음과 같은 엔티티가 두 개 있다. @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "TEAM_ID") privat..

[JPA] @Orderby Annotation

@OneToMany나 @ManyToOne 연관관계 설정시 @Orderby로 정렬을 할 수 있다. @OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL) @OrderBy(clause = "key") @JoinColumns({ @JoinColumn(name="A", referencedColumnName="A", insertable = false, updatable = false), @JoinColumn(name="B", referencedColumnName="B", insertable = false, updatable = false) }) private List amountList; @ManyToOne(fetch=FetchType.LAZY, cascade ..

[Spring] @SuppressWarnings("unchecked")

해당 어노테이션을 인지하지 못하고 자주 썼던 기억이 있다. 이는 노란색 경고를 제외하기 위해 있는 어노테이션이라고 한다. 하나만 적용할 경우에는, @SuppressWarnings("rawtypes") 두 개 이상 적용할 경우에는, @SuppressWarnings({"rawtypes", "unchecked"}) 해당 어노테이션을 사용한다고 한다. 다음은 속성으로 사용 가능한 것으로, 참고 가능하다. 속성 내용 all 모든 경고 cast 캐스트 연산자 관련 경고 dep-ann 사용하지 말아야 할 주석 관련 경고 deprecation 사용하지 말아야 할 메서드 관련 경고 fallthrough switch문에서 break 누락 관련 경고 finally 반환하지 않는 finally 블럭 관련 경고 null nul..

[JPA] queryDSL

queryDSL JPA를 사용하다보면, Repository에서 생성하는 쿼리로는 한계가 있다. 따라서 자바로 SQL문을 작성하고, 간단하게 사용할 수 있다. Examples Basic query List persons = queryFactory.selectFrom(person) .where( person.firstName.eq("John"), person.lastName.eq("Doe")) .fetch(); Order List persons = queryFactory.selectFrom(person) .orderBy(person.lastName.asc(), person.firstName.desc()) .fetch(); Subqueries List persons = queryFactory.selectFro..

[JPA] com.sun.jdi.InvocationException occurred invoking method.

해당 오류가 계속 났었다. 이유를 몰라 해당 오류가 나면 해결할 수 있는 방법들을 모두 적용하였지만 해결하지 못했고, 주로 다음과 같은 JoinColumn 을 사용할 때 오류가 나는 것을 알 수 있었다. @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "id", insertable = false, updatable = false) private Member member; 하지만 전혀 관련 없었고, 변수의 타입을 잘못 기재했다. // x private String age; // o private Long age; 반성해야지.

[CS] 웹 시스템 구성

1.Web browser Web server에 정보를 요청하고 응답을 반환받는 프로그램 종류 : 구글 크롭 언어 : HTML , CSS , Javascript 2. Web Server 클라이언트에서 요청하는 HTTP요청을 처리하는 웹서버 Web browser가 요청한 정보가 정적인지 동적인이 판별하는 프로그램 1) 정적일 경우 HTML 반환 2) 동적일 경우 WAS가 생성해준 HTML 파일 반환 종류 : Apache , nginx 등 3. Web Application Server(WAS) 클라이언트 요청에 따라 동적인 기능들을 제공해 주고, DB가 필요할 경우 DBMS와 상호작용 종류 : Tomcat, jeus, 4. DBMS 데이터베이스를 효율적으로 관리할 수 있는 프로그램 종류 : MySQL , Ma..

[ios] 애플 로그인

다른 references 참고 부탁드립니다! 1. Apple Sing in 위한 검증 요청 client_id, redirect_uri, respoinse_type 등의 파마미터를 담아https://appleid.apple.com/auth/authorize를 호출한다. GET https://appleid.apple.com/auth/authorize Apple ID로 로그인 appleid.apple.com Query Parameters 전부 String Request https://appleid.apple.com/auth/authorize?client_id=[CLIENT_ID]&redirect_uri=[REDIRECT_URL]&response_type=code id_token&state=[STATE]&sco..

반응형