전체 글
-
JPA (JPQL) (2)카테고리 없음 2023. 4. 20. 09:52
JPA의 JPQL 두번째 시간이다. 간단간단하게 빠르게 가자! TypedQuery, Query 작성한 JPQL을 실행하려면 쿼리 객체를 만들어야 한다. 쿼리 객체는 TypedQuery와 Query가 있는데 반환할 타입이 명확하게 지정 할 수 있으면 TypedQuery 아니면 Query를 선택하면 된다. TypedQuery typedQuery = entityManager.createQuery("select m from Member m", Member.class); System.out.println(typedQuery.getResultList() .stream() .map(i -> i.toString()) .collect(joining("\ ")) ); Query query = entityManager.cr..
-
redis 파일 설정카테고리 없음 2023. 4. 20. 09:52
간단하게 레디스의 설정(파일) 에 대해 알아보자. 레디스는 기본적으로 두가지의 방식을 제공한다. 하나는 RDB 또 다른 한개는 AOF 방식이다. RDB파일 방식은 특정한 간격마다 메모리에 있는 레디스 전체를 디스크에 쓴다. 백업을 받을 시 용이한 방식이다. AOF 는 Append Only File 약자로 명령이 실행 될때마다 기록되는 방식이다. 데이터 손실의 거의 없으나 성능에 영향을 미친다. RDB 특정 시점에 데이터를 바이너리 파일로 저정한다. AOF 파일보다 사이즈가 작아 로딩속다가 보다 빠르다. 시점은 지정하는 파일은 redis.conf의 save라는 파라미터 이다. save 조건은 여러 개를 지정 할 수 있고 어느 한 것이라도 만족한다면 실행된다. 만약 저장하지 않으려면 save를 제거 하거나 ..
-
elasticsearch 설치 해보자카테고리 없음 2023. 4. 20. 09:52
elasticsearch 설치를 해보자 mac 기준으로 brew 말고 파일을 다운로드 받으면서 할 것이다. 일단 홈페이지 가서 다운로드 받자. 압축을 해지한 뒤에 적절할 곳에 폴더를 두자. 엘라스틱서치 루트에 가서 다음과 같이 입력하자 bin/elasticsearch 그럼 쭉쭉 로그가 올라온다. 잘되는지 확인하기 위해 http://localhost:9200 으로 접속해보자. 그러면 json으로 출력 결과를 보여줄 것이다. 다음으로 플러그인을 설치하자. marvel 플러그인과 sense 플러그인을 설치 할 것이다. 그전에 설치할 것이 있는데 kibana 라는 것이다. 여기 가서 다운로드 받자. 이것 또한 적절할 곳에 압축을 해지 한후에 다음과 같이 입력하면 된다. bin/kibana 그럼 실행이 될 것이다..
-
JPA (JPQL)카테고리 없음 2023. 4. 20. 09:52
간단하게 JPQL에 대해서 보자 JPQL은 좀더 복잡한 검색 방법에 대해 나온 쿼리 언어이다. 우리는 ORM을 사용하면 데이터베이스 테이블이 아닌 엔티티 객체를 대상으로 개발하므로 검색도 테이블이 대상이 아닌 객체를 대상으로 하는 방법이 필요 해서 나온 언어이다. 여기서 중요한 것은 데이터베이스를 대상으로 하는 것이 아니라 객체를 대상으로 하는 방식이다. JPQL은 일반 네이티브 Sql과 비슷하다. 몇 가지만 다르고 거의 비슷한 문법을 가지고 있어 Sql을 조금할 줄 안다면 이해가 더 빠를 것 이다. JPQL을 도와주는 빌더들이 존재한다. 1. Criteria 쿼리 2. Query Dsl Criteria 쿼리는 Jpa에서 공식적으로 지원하는 빌더이고 QueryDsl 은 공식적으로 지원하지는 않지만 훨씬 ..
-
redis command 를 알아보자카테고리 없음 2023. 4. 20. 09:52
레디스에는 다양한 커멘드를 지원한다. 그 중 가장 많이 쓰는 커멘드를 알아 보겠다. set 일단 제일 기본적인 set 이다. 말그대로 데이터를 입력하는 것이다. 127.0.0.1:6379> set key hi OK 127.0.0.1:6379> set key1 wonwoo OK get 데이터를 넣었으니 가져와야 한다. 127.0.0.1:6379> get key "hi" 127.0.0.1:6379> get key1 "wonwoo" del 데이터를 지우는 연산이다. 127.0.0.1:6379> get key "hi" 127.0.0.1:6379> del key (integer) 1 127.0.0.1:6379> get key (nil) incr 숫자를 증가 시키는 연산이다. 127.0.0.1:6379> set c..
-
spring boot redis pub sub카테고리 없음 2023. 4. 20. 09:52
Spring Boot의 redis pub sub을 알아보자. 저번에는 레디스 캐싱에 대해 알아 봤는데..약간 부족한 면이 있다 나중에 좀더 살펴 봐야 겠다. pub sub 시스템은 채널에 구독 신청을 한 모든 sub에게 메시지를 전달한다. 한마디로 구독한 채널에 대해 메시지를 전달하는 시스템을 말하는거다. Spring boot를 사용하면 좀더 쉽게 셋팅하고 구현할 수 있다. 일단 레디스가 설치 되어 있어야 한다. 레디스 설치는 인터넷에서 참고하기 바란다. 바로 소스를 보자 일단 maven으로 하기 때문에 pom xml 파일을 보자. org.springframework.boot spring-boot-starter-data-redis com.fasterxml.jackson.core jackson-databi..
-
초기화 지연은 신중하게 하라!카테고리 없음 2023. 4. 20. 09:52
이펙이트 자바! 초기화 지연은 신중하게 하라 초기화 지연(Lazy initialization)은 필드 초기화를 실제로 그 값이 쓰일 때까지 미루는 것이다. 값을 사용하는 곳이 없다면 필드는 결코 초기화되지 않을 것이다. 이 기법은 static 필드와 객체 필드에 모두 적용 가능하다. 대부분의 최적화가 그렇듯이, 초기화 지연을 적용할 때 따라야 할 최고의 지침은 정말로 필요하지 않으면 하지마라라는 것이다. 클래스를 초기화하고 객체를 생성하는 비용은 줄이지만, 필드 사용 비용은 증가 시킨다. 초기화 지연이 적용된 필드 가운데 실제로 초기화되어야하는 필드의 비율, 초기화 비용, 그리고 필드의 실제 이용 빈도에 따라 실제 성능은 떨어질 수 도 있다. 다시 말해서 초기화 지연 기법이 어울리는 곳이 따로 있다는 것..
-
JPA 필드 와 컬럼 매핑 레퍼런스카테고리 없음 2023. 4. 19. 09:58
책을 맨날 들고 다닐수 없으니 정리해야겠다. 너무 피곤하다 요즘 ㅜㅜ 시작하자! @Column : 컬럼을 매핑한다. @Enumerated : enum 타입을 매핑한다. @Temporal : 날짜 타입 매핑한다. @Lob : BLOB, CLOB 타입을 매핑한다. @Transient : 해당 필드를 데이터 베이스에 매핑 시키지 않는다. @Access : JPA가 엔티티 접근하는 방식을 지정한다. @Column name : 필드와 매핑할 테이블의 컬럼 이름 insertable : 엔티티 저장시 이 필드도 같이 저장한다. false로 설정하면 데이터베이스에 저장하지 않는다. 읽기 전용일때 사용한다. updatable : 위와 동일한 하지만 수정일때 해당 된다. nullable(DDL) : null 값 허용 여부..