반응형

Spring 51

태태개발일지 - redis

인덱스 DB글에서 많이 다룬 부분이다.책에 책갈피를 끼고 책의 페이지를 검색하는 것과 유사하다고 보면된다.  이번 프로젝트에서 확인해야할 부분은 기존 vs 인덱스 vs 캐시 성능의 차이를 확인하는 것이였다. 우선 테스트의 결과는 하단에서 다루고, index를 설정하면서 생각했던 부분을 설명하고자 한다. QuerySELECT *FROM Screenings sINNER JOIN Movies m ON s.movie_id = m.movie_idINNER JOIN Theaters t ON s.theater_id = t.theater_idWHERE m.title = 'Movie Title 378' AND m.genre = 'ACTION'ORDER BY m.release_date, s.screening_date; ..

Spring/Redis 2025.01.27

태태개발일지 - redis

근황 오랜만에 다시 글을 작성하게 되었다.회사일이 바빠지기도 했고, 영어시험, spring boot 공부, 항해 redis, AI준비 등다양한 것을 조금씩 준비하다보니 글을 작성할 시간이 부족했다.(사실 쓰려면 썼음)     멀티모듈데이터 베이스 설계부터 시작했는데. 이 부분은 DB부분에 DB설계하는 부분에 내용을 작성해 놓았다. 우선 멀티 모듈을 설계하기 위해서 선택해야할 것은 두가지였다. 1. domain 별 모듈로 설정.2. Architecture 별 모듈로 설정. 나는 2번을 골랐다.  이유: 원래 Spring 프로젝트를 할 때 계층별로 묶어서 객체지향적으로 프로젝트를 하는 것을 선호 하기 때문이다.2번을 실행하면 Architecture구조는 "clean + Layered Architecture"..

Spring/Redis 2025.01.27

태태코딩 - 영속성 컨텍스트

영속성 컨텍스트간단하게 요약해서 작성하자면. 가장 잘 정리된 사진인거같아서 퍼온다.   보통 JPA를 사용하면 EntityManger에 대해서 모르고 자동으로 사용하는 사람들이 많다.하지만 EntityManger를 알아야 JPA를 더 효율적으로 사용할 수 있다.  위의 흐름을 보면  JPA를 사용하면서 java.class로 Entity를 만들고 Entity Manager Factory를 통해 Entity Manager 생성 EntityManger를 통해서 Entity를 관리 Persistance Context에서 관리 Persistence Unit은 DB연결에 대한 설정으로 .XML로 사용해야 했지만, 요즘은 .프로퍼티(.property), .야믈(yaml) 파일에 datasource, user, pas..

Spring/JPA 2024.12.21

태태개발일지 -Spring(토비 님)

오늘은 간단한 어너테이션의 기능들을 알아보겠다. @ConditionalOnSingleCandidate Spring container bean 구성정보에 하나의 클래스만 등록이 되어있다면 가져와서 사용하겠다는 뜻이다.예를 들면 @ConditionalOnSingleCandidate(DataSource.class) 아래와 같이 사용하고 DataSource.class가 하나만 있을 때 가져와서 사용한다는 뜻이다.   jdbcTemplate, jdbcTransactionManger는 가장 기본적인 jdbc 의존성이고 @Transactional 어노테이션을 사용할 수 있게 해준다. @EnableTransactionManagement  selecter를 통하여  proxy기반 , aspectj 기반의 구성정보를 가져..

Spring 2024.12.18

태태개발일지 - 비동기처리

동기작업이 순차적으로 실행된다. 하나의 작업이 끝나야 다음 작업을 진행할 수 있다. public void syncExample() { System.out.println("파일 다운로드 시작"); downloadFile(); // 파일 다운로드가 끝날 때까지 대기 System.out.println("파일 다운로드 완료");}public void downloadFile() { try { Thread.sleep(3000); // 3초 동안 대기 (파일 다운로드 시뮬레이션) } catch (InterruptedException e) { e.printStackTrace(); }} 파일 다운로드가 끝날 때 까지 기다렸다가 아래의 다운로드 완료를 찍는다. 비동..

Spring/JPA 2024.12.11

태태코딩 - 그라파나 Grafana Loki 로그수집

Lokigrafana Labs 에서 개발한 로깅시스템이다.Grafana와 연동하여 데이터를 시각화 할 수 있도록 도와주는 중앙 로깅시스템이다.  GrafanaDatasource를 사용하여 여러형태의 UI로 데이터 시각화를 도와주는 서버다. 1. Grafana를 통한 로그 시각화를 제공되며, 로그 수집기인 Promtail을 제공합니다.2. 로그를 저장할 수 있는 HTTP API를 제공합니다. (http://localhost:3100/loki/api/v1/push)3. Loki데이터 저장소에서 LogQL을 사용하여 데이터 조회할 수 있다. 데이터 수집 방법 1. application -> promtail -> loki -> Grafana -> users2. application -> loki -> Grafa..

태태개발일지 - 어노테이션

어노테이션(@Annotation) 이번 주제는 간단하게 기억하기 위한 정리이다. 어노테이션을 만들 때는 아래와 같은 두가지 정보가 필요하다. 1. Target@Target은 Method, class, enum , interface등 어노테이션이 적용될 수 있는 type을 의미하는 것이고,@Target(ElementType.TYPE) 하면 모두 적용된다. 2.  Retention@Retention 애노테이션은 애노테이션의 라이프 사이클 즉, 애노테이션이 언제까지 살아 남아 있을지를 정하는 것이다. RetentionPolicy.SOURCE : 소스 코드(.java)까지 남아있는다.RetentionPolicy.CLASS : 클래스 파일(.class)까지 남아있는다.(=바이트 코드)RetentionPolicy...

Spring 2024.12.09

태태개발일지 - Componet

@Component 가장 일반적인 형태의 어노테이션으로, 특정 역할에 종속되지 않는 일반적인 Spring bean을 나타낸다.공통적인 기능을 제공하는 유틸리티 클래스나, 특정 계층에 속하지않는 일반적인 컴포넌트를 정의할 때 사용된다. @Repository데이터 엑세스계층의 bean을 의미한다. @Service비지니스 계층의 bean을 의미한다. @Controller프레젠테이션 계층의 bean을 의미한다. Repository, Service, Controller 모두다 Component를 가지고있는 멀티 어노테이션이다. 그렇다면 각 어노테이션에 @Component를 사용할 순 없나? 정답은 불가능하지 않다. @Controller, @Service, @Repository 모두 @Component를 함유한 멀..

Spring 2024.12.06

태태개발일지 - Spring(토비님)

GenericApplicationContextGenericApplicationContext = applicationContext = new GenericApplicationContext();applicationContext.registerBean(HelloController.class);applicationContext.refresh(); 아래와 같이 Bean을 등록하고 servlet에서applicationContext.getBean(HelloController.class);String ret = helloController.hello(name); 아래와 같이 사용해 주면 된다. DIHelloController -> SimpleHelloService 한 클래스가 다른 클래스의 기능을 사용하게 되면 그것을..

Spring 2024.12.05

태태개발일지 - 트랜잭션?

트랜잭션 jpa를 공부하다 보니"한  클래스안에서 @trancational이 걸려있는 메서드를  @trancational이 걸려있는 메서드 내에서 사용하면 트랜잭션 적용이 안된다" 라는 사실을 알 게 되었다. 그이유는 다음과 같다. Spring에서 트랜잭션은 기본적으로 AOP를 사용해 구현됩니다.이 AOP는 프록시 객체를 생성하여 트랜잭션 관리를 처리합니다. 하지만 클래스 내에서 자기 자신(this)의 메서드를 호출하면 프록시가 아닌 실제 객체의 메서드를 호출하기 때문에 트랜잭션이 적용되지 않을 수 있습니다. @Servicepublic class MyService { @Transactional public void methodA() { // 트랜잭션 시작 Sys..

Spring/JPA 2024.12.03
반응형