Redis를 사용하던 와중 특정 오류가 잡혀 골치 아픈 적이 있었다. public class CacheConfig { private final RedisConnectionFactory redisConnectionFactory; @Bean public CacheManager cacheManager() { RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig() .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())) .serializeValuesWith(Redi..
본 필자는 회사에서 일하면서 고객의 정보를 변경하면 수정 이력을 나타내는 기능과 수정 했던 사람을 추적해야 하는 기능을 구현해야 했다. 기존에는 직접 업데이트가 될 때 마다 전 후 비교를 통해 시간을 업데이트 시키는 방식으로 복잡하게 비즈니스 로직이 수행되었는데 필자는 이걸 좀 더 수월하게 이용하기 위해서 JPA Auditing 기술을 이용하고자 했다. JPA Auditing 이란? 데이터베이스에서 누가 수정하고 언제 수정되었냐는 기록은 매우 중요할 수 있는 데이터이다. JPA에서는 이러한 기능을 추적할 수 있는 기능을 제공하고 있는데 그것이 바로 JPA Auditing 기술이다. 이 기술을 사용하면 자동으로 JPA에서 자동으로 생성이나 수정 발생 시 시간을 매핑하여 데이터베이스에 넣어준다. 사용해보자!..
간략하게 영한님 MVC 2편에 대해 학습한 내용을 적을 예정이다. 오늘은 중요 포인트 중 리터럴 값 사용과 연산 속성 반복 조건부 주석에 대해 학습해보았다. 차근차근 하나 씩 살펴보자. 1. 리터럴 리터럴은 자바에서도 배웠을 것이다. 코드상에 고정된 값으로 상수랑은 좀 다른 의미로 존재한다. 20, 2, "Hello" 등이 리터럴이라고 할 수 있다. 사실 이러한 내용이 중요한 것은 아니다. 핵심은 리터럴은 항상 ''로 감싸야 하는데 이 때 타임리프는 번거로움을 덜어주고자 다음과 같은 상황엔 생략이 가능하다. 가능한 상황 : A-Z, a-z, 0-9, [], . , - , _ 이러한 경우에는 정상적으로 타임리프가 동작하지만 위와 같은 코드는 중간에 Blank가 존재하기 때문에 동작하지 않고 오류가난다. 만..
Spring boot를 처음 설정해놓으면 Application 클래스에 @SpringBootApplication이라는 어노테이션을 볼 수 있다. 그리고 그 안에는 여러가지 주석이 존재한다. @SpringBootConfiguration과 @EnableAutoConfiguration 그리고 @ComponentScan이 존재한다. @EnableAutoConfiguration 이 주석은 AutoConfiguration을 쓰겠다는 것을 의미한다. AutoConfiguration은 해석하면 자동 설정이라는 뜻으로 다음과 같은 Spring.factory에 저장되어 있는 정보들을 가지고 자동으로 스프링 빈으로 등록해준다. 그렇기 때문에 우린 별다른 설정 없이 스프링을 자유롭게 사용할 수 있다. 생각을 해보면 Sprin..
현대 개발자들은 Swagger나 Spring docs를 사용해 RestFul API를 문서화 한다. 그렇다면 왜 문서화를 할까? API 문서화가 필요한 경우 혼자 개발하는 경우엔 필요없는 기능일지도 모르지만, 같이 개발한다고 가정해보자 프론트엔드 개발자는 RestAPI 호출되는 방식을 알아야 한다. 하지만 문서 없이 말로만 설명 한다면 계속 까먹을 때마다 설명해야하는 번거로움도 존재할 수 있고 의사전달이 잘못될 수도 있는 문제가 발생한다. 어찌보면 이는 당연한 일이다. 누군가와 같이 일을 하는데 문서 없이 그저 말로만 하는 경우는 있을 수 없는 일이다! 그렇다면 대표적인 문서 자동화 도구인 Swagger와 RestDocs에 대해서 살펴보도록 하자 Spring REST Docs Restful 서비스의 문서..
JPA는 자바 진영의 ORM 기술 표준이다. JPA는 밑에 그림처럼 애플리케이션과 JDBC 사이에서 동작한다. ORM 이란? 그렇다면 ORM이란 무엇일까? ORM은 Object - Relational Mapping의 앞글자를 따온 이름으로 객체의 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임 워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. 예를 들어 객체를 데이터베이스에 INSERT SQL을 직접 장성하는 것이 아닌 객체를 마치 자바 Collection에 저장하듯이 ORM 프레임 워크에 저장하면 된다. JPA를 사용해서 객체를 저장하는 코드는 다음과 같다. jpa.persist(member); // 저장 조회할 때도 JPA를 통해 객체를 직접 조회하면 된다. J..
JPA를 왜 사용하는가? 필자는 블로그 프로젝트와 팀원들과 토이 프로젝트를 진행하며 JPA를 사용해 왔다. 과거에 JPA를 사용하면서 "SQL쿼리를 직접 작성하지 않는다"는 이점만 보고 JPA를 무작정 사용했던 것 같았다. 하지만 JPA는 우리가 생각하는 것 만큼 간단하지 않다. 복잡하지 않은 일반 개인 프로젝트에서는 무난히 사용했을 지 몰라도 복잡한 연관 관계를 갖고 있는 테이블이 있다고 가정해보자 우리는 이를 JPA로 간단하게 처리할 수 있는가? 그렇다면 JPA를 왜 사용하는지 JPA를 사용했을 때의 이점을 정확히 파악하고 우리는 그것을 남들에게 설명할 수 있어야 한다. 그 이유에 대해 먼저 알아보자 SQL을 직접 다룰 때 발생하는 문제점 RDBMS는 가장 대중적이고 신뢰할 만한 안전한 데이터 저장소..
- Total
- Today
- Yesterday
- 프로그래밍
- Spring
- 자바
- JPA
- 게시판
- 면접준비
- MySQL
- 백엔드
- DevOps
- 코드
- CS
- swarm
- 면접 준비
- 개발자
- 취업준비
- 동시성
- 취업
- Redis
- thread
- java
- 취준
- DB
- 코딩
- 면접
- IT
- docker
- 인터뷰
- Kotlin
- 프로젝트
- 개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |