- JPA Merge, Dirty Checkstarryeye이번 포스트에서 다룰 주제는 JPA 의 Merge, Dirty Check 에 대해서이다. merge() 에 대해서 데이터 업데이트 용도로 쓰면 위험하므로 권장하지 않는 방법이다. 왜 이런말이 나왔을까..위 코드는 Spring Data Jpa 의 SimpleJpaRepository 의 Save 메서드 정의 부분이다. Jpa 를 잘 모르고 사용하면.. 데이터 업데이트를 위해서 비/준영속 상태의 엔티티로 save 를 호출해버린다면 merge 를 호출한 상황이 발생하기 때문이다. 참고> isNew() 에 대해서.. 알아보자 JPA 식별자 생성 전략이 @GenerateValue 이면, save() 호출 시점에 식별자가 없으므로 새로운 엔티티로 인식해서 persist() 로 로직이 흘러간다.. 하지만.. JPA 식..
- 2023-06-06 22:52:53
- Spring Cache AnnotationstarryeyeSpring Framework 에서 제공하는 Cache 어노테이션에 대해 알아보자.. 들어가기 앞서 Spring Cache 에 대해 간단하게 알아보자 Spring Cache 애플리케이션의 캐싱 동작을 어떤 캐시 라이브러리를 사용하던지.. 일관된 방식으로 적용되도록 관리한다에 목적이 있다. Spring Cache 는 Spring Framework 의 일부로 제공되는 모듈이며, 캐싱 로직을 비즈니스 로직으로부터 분리(관심사 분리)하여 코드를 깔끔하게 유지할 수 있도록 도와주는 추상화 계층이다. 참고> Spring Data Redis 의 RedisTemplate 은 Redis 와 상호작용하기 위한 템플릿 클래스이다. Redis 서버와 통신하며, 데이터의 실제 연산(저장, 검색 등)을 제공해준다. Redis 데..
- 2023-06-04 00:13:00
- Spring Data RedisstarryeyeSpring Data Redis 에 대해 알아보자.. Spring Data Redis 의 간단한 이해 Spring Data Redis 는 Redis 데이터베이스와 상호작용할 수 있게 해주는 프레임워크이다. Spring Data Redis 는 Spring Data Jpa 처럼 Spring Data 프로젝트의 일부이다. JPA 를 사용한 데이터 엑세스를 위한 많은 보일러플레이트 코드를 줄일 수 있었는데.. 마찬가지로, Spring Data Redis 도 Redis 를 사용한 데이터 엑세스를 굉장히 간단하게 해준다. 사실 여기까지만 말해도 Spring Data Jpa 를 이미 알고 있다면 벌써 감이 많이 잡힐 것이다.. Redis 의 라이브러리 1. Jedis - Spring Data Redis 에서 지원하는..
- 2023-06-03 02:57:10
- Spring 6의 REST Clients 3가지starryeye이번 포스팅에서는 Spring 6 의 REST Clients 3가지를 예제를 통해 알아보겠다. Spring 공식 문서에 따르면 아래와 같이 소개하고 있다. The Spring Framework provides the following choices for making calls to REST endpoints: 1. RestTemplate - synchronous client with template method API. 2. WebClient - non-blocking, reactive client w fluent API. 3. HTTP Interface - annotated interface with generated, dynamic proxy implementation. 하나씩 예제로 다뤄보자.. ..
- 2023-03-13 22:07:13
- Spring 의 DB 연동 기술 히스토리 요약starryeyeDB 연동 기술의 진화 Application → DB 커넥션 연결, SQL 전송, 결과 응답을 DB마다 다르게 개발 해줘야 함.. (각 DB 마다 모두 함수 사용법이 다름..) → JDBC 자바 표준 인터페이스 등장 Application → JDBC → DB JDBC가 등장하면서 DB 마다 다른 연동 기술을 통합 해줬다. - JDBC 인터페이스의 구현체(JDBC 드라이버)는 각 DB 사에서 개발 ))) 불편한 점 - 커넥션 연결, SQL 전송, 결과 응답 등 반복 코드를 모두 개발 필요 → SQL Mapper 등장 Application → SQL Mapper → JDBC → DB SQL Mapper 를 사용하여 Jdbc를 간접적으로 이용할 수 있게 되었다. 개발자 입장에서는 JDBC의 반복코드를 제거하였..
- 2023-03-10 20:02:59
- JPA 핵심 정리 - 모음starryeye들어가기전에.. "자바 ORM 표준 JPA 프로그래밍" 책 3회차 복습 기념(?) 포스팅 JPA를 포스팅으로 정리하는건 너무 방대하고 힘들다.. 책을 보는 수 밖엔.. 방법이 없다.. 조금씩만 해보자.. 이 포스팅은 글쓴이가 쉽게 까먹을 것 같은 핵심 개념을 쭉 나열한다. 따라서 각 개념마다 연관성이 없을 수 있다. 1. 짧은 개념은 여기 포스팅에 계속 정리.. 2. 긴 설명이 필요한건 따로 포스팅.. 3. case별 JPQL 모음 따로 포스팅.. (지하철 타고 보기 좋음) JPQL(Java Persistence Query Language)은 객체지향 쿼리 언어이다. 엔티티 객체(클래스, 필드)를 대상으로 검색하기 위해 태어난 언어이다. 영속성 컨텍스트란.. 엔티티를 영구 저장하는 환경이라는 뜻이다. 엔..
- 2023-02-22 21:30:02
- JPA 핵심 정리 - EntityManagerstarryeyeEntityManagerFactory EntityManager를 생성해준다. JPA를 동작시키기 위한 기반 객체와 JPA 구현체에 따라 DB 커넥션 풀도 생성한다. EntityManagerFactory는 생성비용이 아주 크기 때문에 Application 전체에서 한번만 생성하고 공유해서 사용해야한다. EntityManager EntityManagerFactory에서 생성할 수 있다. EntityManager를 통해서 엔티티를 DB에 CRUD 할 수 있다. (쉽게 생각해서 가상의 DB라고 생각하자.) 내부에 DataSource(DB Connection)를 유지하면서 데이터베이스와 통신한다. -> 따라서, 스레드간 공유는 하면 안된다. Springboot 에서는.. 위 두 객체를 그냥 의존성 주입 받고 쓰면..
- 2023-02-22 18:04:38
- JPA 핵심 정리 - Table 매핑starryeye@Entity 이 클래스를 테이블과 매핑한다고 JPA에게 알려준다. (엔티티 클래스가 된 것) @Table 엔티티 클래스에 매핑할 테이블 정보를 알려준다. (생략하면 엔티티 이름을 테이블 이름으로 매핑) @Id 엔티티 클래스에서 @Id 어노테이션이 적용된 필드를 테이블의 PK에 매핑한다. (해당 필드를 식별자 필드라 부른다.) @Column 적용된 필드를 컬럼에 매핑한다. -> 생략하게되면 필드명을 사용해서 컬럼명으로 매핑된다. -> 대소문자를 구분하는 데이터베이스를 사용하면 @Column(name = "컬럼명") 처럼 명시적으로 매핑
- 2023-02-22 17:44:50
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)