일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Selection Sorting
- buffer
- 메모리구조
- Stack
- 이스케이프 문자
- 혼자 공부하는 C언어
- Serialization
- stream
- 알기쉬운 알고리즘
- datastructure
- list 컬렉션
- C 언어 코딩 도장
- coding test
- insertion sort
- JSON
- C programming
- 윤성우 열혈자료구조
- 이것이 자바다
- Graph
- 윤성우의 열혈 자료구조
- Algorithm
- R
- s
- Today
- Total
목록Server (73)
Engineering Note
Spring Data JPA를 이용해서 별도의 코드 없이도 CRUD가 실행 가능하다는 사실도 멋지지만, 개발자들에게는 개발 속도를 빠르게 하는 페이징 처리는 정말 매력적인 기능입니다.페이징 처리는 Pageable이라는 타입의 객체를 구성해서 파라미터로 전달하면 됩니다. Pageable은 인터페이스로 설계되어 있고, 일반적으로는 PageRequest.of()라는 기능을 이용해서 개발이 가능합니다. PageRequest.of(페이지 번호, 사이즈): 페이지 번호 0 부터PageRequest.of(페이지 번호, 사이즈, Sort): 정렬 조건 추가PageRequest.of(페이지 번호, 사이즈, Sort.Direction, 속성): 정렬 방향과 여러 속성 지정 파라미터로 Pageable을 이용하면 리턴 타입은..
연관관계 주인JPA에서 양방향 관계로 Entity가 있을 때 외래키를 관리해줄 주인을 정해주어야 한다. JPA는 연관관계의 주인이 어떤 Entity라고 지정하지 않고 연관관계 주인이 아니라는 의미로 'mapped by' 옵션으로 외래키를 관리 하지 않는다고 지정한다.Book과 BookStore 엔티티를 예시로 생각해볼 수 있다. Book과 BookStores는 다대일 관계고, 양방향으로 세팅을 해주었다. Book Entity@Entity@Getter @Setterpublic class Book { @Id @GeneratedValue private Long id; private String isbn; private String title; @ManyToOne priva..
직접 할당: @ID 만 사용 자동 생성(@GeneratedValue) strategy(GenerationType = ) IDENTITY: 데이터베이스에 위임, MySQL(Auto Increment) SEQUENCE: 데이터베이스 시퀀스 오브젝트 사용, ORACLE AUTO: 방언에 따라 자동 지정, 기본값 TABLE:키 생성용 테이블 사용, 모든 DB에서 사용. => 거의 사용 X 참고 자료 : 인프런 JPA 기본편(김영한)
빌드 도구 종류- 메이븐, 그레이들 메이븐- 프레임워크에 관계없이 앱의 빌드 프로세스를 쉽게 관리하는데 사용하는 빌드 도구 그레이들- 메이븐과 마찬가지로 앱 프로세스를 쉽게 관리하는 빌드 도구 빌드도구가 수행하는 일- 앱에 필요한 의존성 내려받기- 테스트 실행- 구문이 정의한 규칙 준수 여부 검증- 보안 취약점 확인- 앱 컴파일- 실행 가능한 아카이브에 앱 패키징(JAR, WAR) GroupId : 관련된 여러 프로젝트를 그룹화 하는데 사용아티팩트 ID: 현재 애플리케이션 이름=> 지정하지 않으면 기본값으로 설정된다. 메이븐 프로젝트 구조는 프로젝트 개발을 위해 선택한 IDE에 의존하지 않는데, 메이븐 프로젝트 구조에서 중요한 파일은 pom.xml이다. maven 프로젝트 주요 구성pom.xml:..
본 글은 Spring의 핵심인 AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)를 학습하면서 @Transactional 어노테이션이 AOP의 대표적인 사례로 볼 수 있음을 알고 두 개념의 관계를 살펴보면서 각 개념을 더 깊이 이해하기 위한 목적으로 작성한 글입니다. @Transactional 어노테이션과 Spring AOP의 관계@Transactional은 **Spring AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍)** 개념이 적용된 대표적인 예시입니다.Spring은 AOP를 활용하여 개발자가 **비즈니스 로직(핵심 관심사)**과 **트랜잭션 처리(Commit/Rollback 등 부가 기능, 횡단 관심사)**를 분리할 수 있도록 지..
QueryDSL 라이브러리라이브러리개념/용도querydsl-aptQuerydsl이 타입 안전한 쿼리를 생성할 수 있도록 코드 생성 기능을 제공합니다.(Q-Class 생성)querydsl-jpaJPA(Java Persistence API) 환경에서 타입 안전한 쿼리를 작성 할 수 있도록 지원하는 Querydsl의 핵심 라이브러리입니다.(복잡한 동적 쿼리 작성에 유용) Spring Boot 라이브러리라이브러리개념/용도spring-boot-stater-webSpring MVC를 사용하여 웹 애플리케이션 개발을 위한 기본적인 의존성 집합(스타터)을 제공하며, 내장 톰캣을 포함합니다.spring-boot-stater-tomcat스프링 부트 애플리케이션에 내장된 웹 서버로 사용되는 톰캠 라이브러리입니다.sprin..
EntityManagerFactory는 애플리케이션 마다 하나가 존재하고, EntityManagerFactory가 EntityManager를 생성한다. 그리고 EntityManager는 영속성 컨텍스트를 관리하는데, 요청 트랜잭션 마다 영속성컨텍스트를 생성하고 소멸시킨다. 영속성 컨텍스트만 자세히 살펴보면 아래와 같다.영속성 컨텍스트는 JPA에서 가장 중요한 개념으로 Entity를 관리하는 공간이고 트랜잭션과 생명주기를 함께한다. 메모리에 존재하면서 DB 테이블의 캐시 역할을 하는데, 실행부터 테이블이 캐시화돼서 존재하는 건 아니고 트랜잭션 내에서 한 번이라도 조회되거나 persist된 엔티티가 key:value 형태로 저장된다. key는 PK, value는 **엔티티 객체(DB 테이블의 row를 표현하..
1. 영속성 컨텍스트 생명주기JPA를 사용하는 환경(주로 Spring Boot의 Service Layer)에서 @Transactional 어노테이션이 붙은 메서드가 호출될 때 영속성 컨텍스트는 다음과 같은 생명주기를 가집니다. 1-1. 트랜잭션 시작 (생성)@Transactional 메서드가 호출되면 데이터베이스 트랜잭션이 시작됩니다.이와 동시에 JPA의 영속성 컨텍스트가 생성되어 현재 실행 중인 쓰레드의 트랜잭션에 바인딩됩니다.이 영속성 컨텍스트가 1차 캐시 역할을 하며, 트랜잭션 내에서 조회되거나 저장된 모든 엔티티 객체들을 관리합니다. 1-2. 비즈니스 로직 실행 (유지)메서드 내에서 JPA 관련 작업(조회, 저장, 수정 등)이 실행되는 동안 영속성 컨텍스트는 유지됩니다.엔티티를 수정하더라도, 이 ..