전체 글 65

Redis 레디스 간략한 기본정리 1

Redis (Remote Dictionary Server) 원격에 위치하고 프로세스로 존재하는 인메모리(InMemory)기반의 Dictionary키밸류 구조 데이터 관리 Server 그래서 관계형데이터베이스와 같이 쿼리 연산을 지원하지는 않지만, 데이터의 고속읽기 + 쓰기에 최적화 되어 있음 일종의 NoSQL -Redis 는 인메모리 솔루션인데 다양한 데이터 구조체를 지원함으로써 DB,Cache,Message Queue, Shared Memory용도로 사용된다. 일반 데이터베이스 같이 디스크에 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 작업속도가 빠른것 다양한 자료구조 지원 String Set Sorted-Set Hashes List 메모리 기반이지만 영속적인 데이터 보존 가능 Lo..

카테고리 없음 2023.08.30

+39 Mockito란 무엇일까?

@Service public class ProductService { // ... public static final int MIN_MY_PRICE = 100; // ... @Transactional public Product updateProduct(Long id, ProductMypriceRequestDto requestDto) { int myprice = requestDto.getMyprice(); if (myprice < MIN_MY_PRICE) { throw new IllegalArgumentException("유효하지 않은 관심 가격입니다. 최소 " + MIN_MY_PRICE + " 원 이상으로 설정해 주세요."); } Product product = productRepository.findB..

카테고리 없음 2023.08.29

+38 단위테스트란? JUnit6

단위테스트란? ㅁ버그 발견 시간이 늦어짐에 따라 비용이 기하급수적으로 커지는걸 알 수 있음.. ㅁ 작은 단위로 쪼개서 각 단위가 정확하게 동작하는 지를 검사하는 테스트 기법 ㅁ 빠르게 작성할 수 있고 문제 발생시 어느 부분이 잘 못 되었는지를 빠르고 정확하게 확인할 수 있다는 장점 Development : 개발 Unit Tests (단위테스트) : 개발자 테스트 QA Testing 블랙박스 테스팅 주로 QA팀이 Production 환경과 유사한 환경에서 테스트 Producton : 실 서비스 운영 환경 :: 자바 프로그래밍 언어 용 단위 테스트 프레임워크 @BeforeEach @BeforeEach void setUp() { System.out.println("각각의 테스트 코드가 실행되기 전에 수행");..

TIL 2023.08.08

+37 Spring 고어 Entity 삭제

orphanRemoval JPA에서 관계형 데이터베이스와 엔티티 사이의 연관관계를 관리할 때 사용 :: 부모 엔티티와 연관된 자식 엔티티가 더 이상 부모엔티티와 연관되지 않을 때 자동으로 삭제 연관관계 설정 @OneToMany , @OneToOne 관계에서 orphanRemoval 속성 설정 할 수 있음 CascadeType.REMOVE를 함께 사용하는 것이 일반적 영속성컨텍스트에서 동작함 그래서 EntityManger가 활성화된 트랜잭션 내에서 동작 장점 1. 자동삭제 : 부모-자식 간의 일관성을 유지하면서 데이터베이스에 불필요한 데이터가 남지 않음 2. 편의성 : 부모엔티티에서 자식 엔티티를 삭제하는 로직을 따로 구현 할 필요 없음 사용시 주의사항

TIL 2023.08.04

+36 영속성 전이

● 영속성 전이란? :: CASCADE의 PERSIST 영속 상태의 Entity에서 수행되는 작업들이 연관된 Entity까지 전파되는 상황을 뜻한다. 부모엔티티의 상태변화가 자식 엔티티에도 전파되어 자동으로 처리됨 즉, 부모 엔티티의 영속성 상태 변화에 따라 연관된 자식 엔티티도 같은 변화를 따라 갈 수 있음 영속성 작업 1. 저장(INSERT) : 새로운 엔티티를 데이터베이스에 저장하는 작업 2. 수정(UPDATE) : 엔티티의 변경 내용을 데이터베이스에 반영하는 작업 3. 삭제 (DELETE) : 엔티티를 데이터베이스에서 삭제하는 작업 4. 병합 (MERGE) : 엔티티의 변경 내용을 데이터베이스에 병합하는 작업 5. 새로고침(REFRESH) : 데이터베이스에서 엔티티의 최신상태를 가져와 엔티티를 갱..

TIL 2023.07.27

+35 Spring 지연로딩

지연로딩(Lazy Loading)? :: 필요한 시점에 데이터를 로드하는 방법을 의미 :: Hivernate라는 ORM 프레임워크를 기반으로 함 :: Hivernate는 JPA 구현체 중 하나로 엔티티를 로드할 때 지연로딩을 사용 할 수 있음 @ManyToOne 과 @OneToOne 관계에서는 즉시로딩 (Eager Loading) @OneToMany 와 @ManyToMany 관계에서는 지연로딩 (Lazy Loading) 지연로딩 애플리케이션 에서 필요한 시점에 실제로 데이터를 로드 할 수 있음 JPA에서는 Fetch Type 라는 방식을 사용 ㄴ Fetch Type에는 LAZY , EAGER 방식있음 LAZY :필요한 시점에 정보를 가져옴 EAGER : 이름의 뜻 처럼 조회할 때 연관된 모든 Entity..

TIL 2023.07.26

WIL 프론트엔드와 첫 협업

첫 협업. 저번주 한주는 프론트 개발자 분과의 첫 협업이 있었던 주 였다. 아직 많이 실력이 부족해서 긴장을 많이 가지고 시작을 했다 프론트분과의 협업은 처음이라 어떻게 소통을 해야하는지 어떤 방식으로 설계를 해야하는지 처음에는 감이 안잡혔다.. 다행이.. 프론트개발자분께서 경험이 많으셔서 도움을 받으면서 순조롭게 진행할 수 있었다. ERD 설계부터 시작해서 와이어프레임 api 문서작성 하기 등 초반 설계 및 기획에서는 진행이 문제가 없었다. 하지만 백단 작업을 진행하면서 처음 접해보는 CICD , HTTPS, AWS 서버 구축 하는 작업이 만만치가 않았다.. 쉴세 없이 터지는 오류.. 배포가 안되는 이슈... 이틀정도 지나야 겨우 완료된 서버작업.. 이제 남은 것은 기능 구현 조바심에 잠 줄여가면서 기..

WIL 2023.07.24

+34 Spring N 대 M관계

@ManyToMany N 대 M 관계를 맺어주는 역할을 가지고 있음 ● N : M관계를 풀어내기 위해서 중간 테이블 생성 강의에서 다룬 코드 음식 Entity (외래키의 주인) 단방향 @Entity @Table(name = "food") public class Food { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private double price; @ManyToMany @JoinTable(name = "orders", // 중간 테이블 생성 joinColumns = @JoinColumn(name = "food_id"), // 현재 위치인 Food Entity 에서 중간 테이블..

TIL 2023.07.22

+33 Spring 1대N 연관관계

@OneToMany :: 1대 N관계를 맺어주는 역할 :: 1 : N 한쪽에 엔티티 관계를 맺은 엔티티 쪽의 여러 객체를 가질 수 있는 것을 의미 :: 소유( has a) 관계라 생각하자 단방향 @OneToMany 일대다 관계를 설정하는 에노테이션, 여러 개의 사용자가 하나의 음식에 속 할 수 있음 @JoinColumn(name = "food_id") User엔티티와 조인을 할 때 사용할 컬럼의 이름을 지정 users테이블에 food_id 라는 컬럼이 생성 private List userList = new ArrayList(); 해당 음식을 소유하는 사용자 목록을 저장하는 리스트 양방향 원래 일반적으로 1대N관계에서는 양방향 관계 x 양방향 관계를 맺으려면 음식 Entity를 외래키의 주인으로 정해주기 ..

TIL 2023.07.20