일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ES
- 애자일프로그래밍
- Java
- 알고리즘
- spring boot
- Baekjoon
- 개발자
- 클린코드
- 데이터베이스
- 코드
- framework
- cleancode
- database
- 코딩테스트
- Elasticsearch
- 개발
- JPA
- 애자일기법
- 엘라스틱서치
- Spring
- 코딩
- API
- 그리디
- 자바
- 읽기쉬운코드
- 프레임워크
- mongoDB
- 백준
- 스프링
- 그리디알고리즘
- Today
- Total
목록Spring (37)
튼튼발자 개발 성장기🏋️

1. 프록시엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아닐 것이다. 지금 내가 리딩하고 있는 토이프로젝트만 봐도 유저 엔티티에 피드 엔티티, 댓글 엔티티 등 많은 엔티티와 연관관계를 갖는데 항상 사용되지는 않는다. 유저의 정보를 조회할 때 이 사용되지 않는 엔티티까지 조회하는 것은 굉장한 부담이 되고 비효율적일 것이다.JPA는 이런 문제를 해결하고자 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 방법을 제공하는데 이것을 지연 로딩이라고 한다. 이 지연 로딩을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데 이 것을 프록시 객체라 부른다.1.1. 프록시 기초 프록시는 JPA가 엔티티의 연관관계를 처리하는 핵심적인 기법 중 하나로, 실제 ..
1. 상속 관계 매핑객체 지향 프로그래밍에서 상속은 중요한 개념인 것은 누구나 알고 있는 사실이다. JPA에서는 이러한 상속 관계를 데이터베이스 테이블에 매핑하는 여러 가지 전략을 제공한다.1.1. 조인 전략 (Joined Strategy)조인 전략은 부모 클래스와 자식 클래스 각각에 대한 테이블을 생성하고, 자식 클래스의 테이블은 부모 클래스의 기본 키를 외래 키로 참조하는 방식이다.@Entity@Inheritance(strategy = InheritanceType.JOINED)public abstract class Item { @Id @GeneratedValue private Long id; private String name;}@Entitypublic class Book extend..
단방향 연관관계순수한 객체 연관관계순수한 객체 모델에서는 클래스 간의 연관관계를 필드를 통해 나타낸다. 예를 들어, Member 객체가 Team 객체와 연관관계를 가질 때, Member 클래스는 Team 객체를 참조하는 필드를 가질 수 있다.public class Member { private Long id; private String name; private Team team;}public class Team { private Long id; private String name;}테이블 연관관계관계형 데이터베이스에서는 이러한 연관관계를 외래 키(Foreign Key)를 통해 관리한다. 위의 객체 모델을 데이터베이스에 매핑하면, MEMBER 테이블에는 TEAM_ID라는 외래 키..

단위 테스트 JUnit과 Mockito를 사용한 단위 테스트를 알아보는 시간~😄 JUnit 테스트는 테스트 케이스라고도 하는데 클래스 레벨에서 특정 기능을 테스트하는 것으로써 클래스 당 하나 이상의 테스트 케이스를 가진다. import org. junit. jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; public class StringTest { @Test public void testStringEquals() { String michael = "Michael"; String michael2 = michael; String michael3 = new String("Michael"); String michael4 = "Michae..

서킷 브레이커: 배치 내에서 호출하는 rest api에 과부화가 걸렸을 때 사용 서킷 브레이커 패턴을 구현하여 스프링 배치는 [스프링 리트라이]라는 라이브러리에 의존한다 implementation group: 'org.springframework.retry', name: 'spring-retry', version: '1.3.3' 서킷 브레이커로 래핑할 메서드를 식별 식별된 매서드에서 발생한 예외 건수가 임계값을 초과하면 서킷 브레이커가 해당 매서드에 대한 호출을 중지 및 대체 매서드로 트래픽을 라우팅 대체 매서드는 원래 메서드와 다른 처리방식 ex. api가 반환하는 값 대신 기본 값을 반환 특정 알고리즘을 기반으로 다시 원래 메서드로 트래픽을 되돌려 다시 정상인 상태로 되돌아 왔는지 테스트 서킷 브레이..

※ 본 '코인 자동 매매 프로그램 만들기' 시리즈 포스팅은 개인적인 학습용으로 개발하게 되는 프로그램입니다. 투자의 책임은 투자자 본인에게 있음을 알려드립니다. 이번 포스팅에서는 scheduling에 대해 설명한다. 내가 배치로 실행할 scheduler는 아래와 같다. Alarm class : 내가 투자를 하면서 가장 내 자신이 한심하다고 느낀 것이 하루종일 앱만 보고 있는 나의 모습이었다. 그래서 앱을 보지 않게 하기 위해 일정한 시간 간격으로 나의 포트폴리오 상태를 slack을 통해 알람을 발송한다. Buy class : 말 그래도 매수만을 담당한다. 그러나 내가 사지 않은 새로운 코인만을 매수한다. (추가매수 x) DailyVisual class : 나의 포트폴리오에 대해서 매일 9시에 시각화한다...
※ 본 '코인 자동 매매 프로그램 만들기' 시리즈 포스팅은 개인적인 학습용으로 개발하게 되는 프로그램입니다. 투자의 책임은 투자자 본인에게 있음을 알려드립니다. 이번 포스팅은 프로그램에 사용될 resource에 대해 이야기한다. encrypted.a.key={업비트에서_발급받은_암호화된_access_key} encrypted.s.key={업비트에서_발급받은_암호화된_secret_key} 나는 업비트에서 API를 사용하기 위해 발급되는 access key와 secret key를 한 번 암호화 해서 사용한다. 실제 배치에서는 해당 키를 사용해서 로그인을 시도할 때, 복호화가 진행되게 해서 보안에 신경썼다. 암호화의 종류는 선호하는 방식을 진행하면 된다. key={암호화_key_32byte} iv={암호화_i..
JPA를 사용하면서 가장 중요한 일이 java의 entity와 database의 table을 매핑하는 것이라고 해도 과언이 아니다. 따라서 우리는 매핑 어노테이션을 충분히 알고 써야할 책임이 있다. JPA는 4가지의 매핑 어노테이션을 지원한다. - 객체와 테이블 매핑 : @Entity, @Table - 기본 키 매핑 : @Id - 필드와 컬럼 매핑 : @Column - 연관관계 매핑 : @ManyToOne, @JoinColumn @Entity 테이블과 엔티티를 매핑할 때에는 필수로 사용해야한다. @Entity 어노테이션에서 지원하는 속성은 다음과 같이 정리할 수 있다. 속성 기능 default name 엔티티 명 지정. 다른 패키지에 이름이 같은 엔티티 클래스가 있을 때 사용하여 충돌이 일어나지 않도록 ..