스프링 (Spring)/스프링 데이터 (Spring Data)(6)
-
JPA(Jakarta Persistence API) - Type Conversion
Converter 말 그대로 자료형을 적재할 때 또는 로드할 때 바꿔서 가져오는 것입니다.다만 그렇다고 숫자인데 굳이 문자열로 바꿔서 만들 필요는 없습니다.즉 기본형에 대해서는 그닥 쓸 필요가 없죠. 하지만 때로는 유용한 게, 바로 List, Map 입니다.예를 들어보죠. 여기 Tomato 엔티티가 있고 컬럼 중에 tags가 있습니다.@Entity@Table(name = "tomatoes")class Tomato( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val srl: Long = Long.MIN_VALUE, val tags: MutableList = mutableListOf()) 안타깝지만, JPA에서는 Collectio..
2024.08.02 -
JPA(Jakarta Persistence API) - Entity Listener
Callback 엔티티 인스턴스의 생애주기는 크게 신규(new), 관리(manage), 해제(detach), 삭제(remove)로 나눌 수 있습니다.(더 자세한 설명은 JPA(Jakarta Persistence API) - Entity Operation 글을 참고해주세요.) 이번 글에서 다룰 콜백은 각 생애주기를 만나기 전과 후에 호출되는 함수입니다.사용하려면 아래 어노테이션을 엔티티 함수 위에 붙여주면 됩니다.어노테이션관점시점관련 있는 연산PrePersist엔티티 매니저영속 전persist, mergePostPersist엔티티 매니저영속 후persist, mergePreRemove엔티티 매니저삭제 전removePostRemove엔티티 매니저삭제 후removePreUpdate데이터베이스업데이트 전upda..
2024.07.31 -
JPA(Jakarta Persistence API) - Entity Operation
Persistence Context 영속성 컨텍스트(persistence context)는 엔티티 인스턴스들이 관리되는 장소입니다.그리고 엔티티 매니저(entity manager)는 영속성 컨텍스트를 방문해 상호작용 할 수 있는 인터페이스를 가지고 있고요.쉽게 말해 엔티티 매니저는 우리가 어플리케이션에서 생성한 엔티티 인스턴스들을영속성 컨텍스트에 방문해서 가져와, 이를 통해 실제 데이터베이스에 CRUD를 수행한다고 생각하면 됩니다. 그렇기에 당연히 엔티티 매니저는 쿼리(query)를 생성할 수 있습니다.예를 들어 JPA(Jakarta Persistence API) - Entity 글에서 작성한 코드 중 하나를 실행해보면val peach = entityManager.find(Peach::class.java..
2024.06.06 -
JPA(Jakarta Persistence API) - Entity
Entity 엔티티(entity)란 가벼운 영속성 도메인 객체를 의미합니다.An entity is a lightweight persistent domain object. 가볍다라는 건, 최소한의 노력과 자원을 써야된다는 말과 같습니다.Jakarta에서 가장 쉽게 엔티티를 표현할 수 있는 건 그저 클래스(class)입니다. 그리고 영속성(persistent)이라는 건 없어지지 않는 특성을 생각하면 됩니다.쉽게 이해하면 우리가 파일을 저장했을 때 컴퓨터를 껐다 켜도 파일 내용이 사라지지 않는 것처럼이죠. 바로 뒤에 도메인(domain)이라는 용어를 썼는데,이는 곧 엔티티를 수단으로써 데이터의 변경 사항을 어딘가에 기록해둔다는 것입니다.즉 엔티티 자체가 데이터를 영속화하지 않고, 무언가가 엔티티를 통해서 데이..
2024.05.22 -
JPA(Jakarta Persistence API) - Overview
본 글은 아래 Jakarta Persistence 문서를 참고하여 작성했습니다.Copyright (c) 2019, 2024 Eclipse Foundation. This document includes material copied from or derived from https://jakartaee.github.io/persistence/latest/draft.html Jakarta PersistenceThe following are reserved identifiers: ABS, ALL, AND, ANY, AS, ASC, AVG, BETWEEN, BIT_LENGTH, BOTH, BY, CASE, CEILING, CHAR_LENGTH, CHARACTER_LENGTH, CLASS, COALESCE, CONC..
2024.05.19 -
SpringBootTest에 HSQL 데이터베이스 적용기
HSQL? Spring 문서의 Data 항목을 보면 간단하게 만들 수 있는 Embeded DataSource를 소개해줍니다. DataThe Spring Framework provides extensive support for working with SQL databases, from direct JDBC access using JdbcClient or JdbcTemplate to complete “object relational mapping” technologies such as Hibernate. Spring Data provides an additional level ofdocs.spring.io 그냥 쉽게 말해 외부 데이터베이스 연결 없이 자체 구축되는 데이터베이스라고 이해하고 있습니다.후보군은 ..
2024.05.03