2024/02 5

Spring 에서 configuration 을 다루는 방법 - @Value vs @ConfigurationProperties

사이드 프로젝트를 하면서 동료 개발자분께서 Components/KakaoKey 의 존재 이유를 여쭤보셨다. application.properties 의 값을 @Value 어노테이션을 이용해 가져와 저장하는 목적의 클래스들이었다. 단순히 환경 설정을 위한 값을 저장하는 빈, 컴포넌트로는 사용하기 애매할 수 있다는 생각이 들었고, @ConfigurationProperties라는 어노테이션에 대해 알게 되어 이번 기회에 정리해보게 되었다. Externalized Configuration 서로 다른 환경에서 애플리케이션이 돌아갈 수 있게 하는 방법 중 하나는 externalized configuration 이다. 여러가지 외부 설정을 java properies 파일, yaml 파일, 환경 변수, command-..

개발/java 2024.02.26

백준 2636 - 치즈 - BFS

https://www.acmicpc.net/problem/2636 2636번: 치즈 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모 칸에 X친 부분)에는 치즈가 놓 www.acmicpc.net 랭크 : 골드 4 걸린 시간: 40분 해설 이 문제는 치즈가 시간이 지날 때마다 공기와 닿는 부분이 녹는 문제이다. 쉽게 생각하면 자칫 할 수 있는 오류는 다음과 같다. "공기를 queue에 담은 후 BFS를 진행하면서 시간(== 닿는데 걸린 거리)을 체크하면 되지 않을까? " 이러한 점은 문제가 다음과 같다. 1. 치즈 안의 공기, 즉 가장 자리와 맞닿아 있지 않은 공기는 치즈를 녹이지 않는다. 2. 새로 생긴 구..

[Spring - JPA] 3. 영속성관리

JPA 에서 가장 중요한 2가지 객체와 관계형 데이터 베이스를 어떻게 매핑하나 영속성 컨텍스트 (JPA 가 내부적으로 어떻게 동작하나) 1. 영속성 컨텍스트란? 'Entity를 영구 저장하는 환경’이라는 뜻 EntityManager.persist(entity); EntityManager를 통해 영속성 컨텍스트에 접근. 2. Entity 의 생명주기 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속(managed) : 영속성 컨텍스트에 관리되는 상태 ((em.persist(member))) 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 (em.detach(member)) 삭제 (removed) : 삭제된 상태 *영속상태가 되었다고 해서 바로..

개발/java 2024.02.18

[Spring - JPA] 2. JPA 개요

JPA 설정하기 위치가 정해져 있음. Dialect ? 데이터베이스들은 각각 SQL 문법과 함수가 조금씩 다르다. 예를 들어 Mysql은 VARCHAR, Oracle은 VARCHAR2 페이징 : Mysql은 LIMIT, Oracle은 ROWNUM 방언 -> SQL 표준을 지키지 않는 특정 데이터베이스 만의 고유한 기능. JPA 구동 방식 설정정보를 보고 나서, entity manager factory를 만든다. persistenceUnitName (pom.xml 에서 설정된 게 있음) 인자를 넣어서 createEntityManagerFactory 궁금한 점 : 트랜잭션마다 entity manager 를 새롭게 만들어야 하는 이유가 뭐지? create table Member( id bigint not nu..

개발/java 2024.02.18

[Spring - JPA] 1. JPA 소개

*본 글은 JPA 에 대해 공부(책, 강의) 하고 쓴 글입니다. 내용 요약 JPA 란, 객체와 관계형 데이터 베이스 간을 연결해주는 인터페이스로, 객체의 필드에 대해 관계형 데이터베이스에 저장, 삭제, 수정, 조회를 SQL 작성없이 용이하게 할 수 있도록 하는 JAVA API 이다. (Java Persistence API) - JPA는 entityManager를 통해 객체를 관리한다. - JPA는 JPQL 을 사용하여 객체를 기반으로한 쿼리를 작성할 수 있다. - JPA 는 내부적으로 database 와 통신하기 위해 JDBC 를 사용한다. JPA 를 사용함으로써 직접 SQL을 작성해 객체를 저장해야하는 시절의 어려움 (객체들마다 다르게 작성, 상속관계, 연관관계의 객체들은 별도의 맵핑, 객체간의 비교 ..

개발/java 2024.02.03
728x90
728x90