인프런 스프링 입문 - 김영한 강의를 참고하였습니다. a. Spring AOP 가 필요한 경우ex) 모든 메서드의 호출 시간을 측정 ( 인프런 스프링 입문 - 김영한 강의)ex) 사용자 무슨 액션을 하는지 로그를 쌓는 경우/*** 사용자 상품 주문* - 상황 : 사용자가 몇시에, 어떤 액션을 했는지 알기 위해서 사용자 로그를 쌓아야한다. * - 핵심 로직 (상품 주문) + 부가 로직 (로그 쌓기) */@Transactionalpublic List saveOrder(Long goodsId){ log.debug("== 사용자 {} 상품 주문 시작 ==",goodsId); orderRepository.save(goodsId); log.debug("== 사용자 {} 상품 주문 저장 완료, 사용자 로..

a. DB Replication 란 동일한 DB를 복제하여, Master/Slave 구조를 활용하여 DB 의 부하를 분산시키는기술DB를 오랫동안 점유하는 쿼리는 DeadLock 이 발생할 확률 ⬆️⇒ 성능저하 ⇒ 분산시켜서 성능을 올리자!Insert/Update/Delete는 Master DB 로 바라보게 구성Select 는 Slave DB를 바라보게 구성왜 Select 일까?인덱스 없는 여러개 조인, 너무 많은 데이터로 ⇒ full Scan 을 생길 수 있음모든 테이블을 읽어야하는 full Scan 과 동시에 쓰기작업이 일어난다면 DeadLock 발생할 가능성 높아짐!다만, 락이 걸리는 방식과 데이터베이스마다 트랜잭션 격리수준은 다름!!API 를 통해 변경되는 데이터는 Master DB를 통해서 반영되..

@Column(updateable = false)JPA 엔티티속 수정되지 않은 컬럼에다가 @Column(updateable = false) 설정을 하곤한다. 위 애노테이션이 과연 어떻게 작동하는가? 알아보려 한다. @Column(updateable = false) 테스트 코드 작성테스트할 Customer 엔티티 생성@NoArgsConstructor@AllArgsConstructor@Builder@Getter@Entitypublic class Customer{ @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String firstName; private String lastName; ..

Cache 자주 사용하는 데이터를 빠르게 접근하기 위한 임시저장공간 데이터 조회 속도 향상과 성능최적화를 목적으로 한다. --> DB 부하를 줄일 수 있다. Spring Cache 동작 방식 캐시 애노테이션이 적용된 메서드를 호출캐싱된 데이터가 있는지 확인 있으면 바로 반환 없으면 DB 조회 후에, 결과 캐싱에 저장 이후 같은 메서드, 같은 키 값 호출시 캐시에서 값 가져옴 Spring Cache 저장 위치 기본 저장소 (JVM memory) 또는 외부 캐시 저장소 (Redis.. 등등) 필요기본 저장소 (JVM memory)간단한 개발단계에서만 사용, 실무에서는 외부 캐시 저장소 사용JVM Heap memory 에 저장되기에, 서버 재시작시 캐싱된 데이터 없어짐 Redis 인메모리 데이터 저장소..

관계형 DB 에서 M:N 연관관계 비즈니스 서비스를 DB 를 모델링 하는 과정에서 다대다 관계가 나올 수 있다.1개의 주문은 N개의 상품을 주문한다.1개의 상품은 M개 주문에 포함될 수 있다.이렇게 되면 관계형DB 입장에서는 관계를 표시할 수가 없다.하나의 레코드에서 하나의 FK 만 가져야 하기 때문이다.“콩나물” 상품을 M개 주문했다면 상품테이블에 주문 외래키로 뭐를 가져야할지?1번 주문에 여러개 상품을 주문했다면, 주문테이블에 상품 외래키로 뭐를 가져야할지?즉 서로의 외래키가 애매해진다.. b. 다대다 연관관계 해소를 위한 중간테이블 필요하나의 레코드에서 한 개의 FK 명시를 위해서는 중간테이블이 필요하다중간테이블을 만들어서, 1:N 관계를 2개를 만든다.1개 주문에 N개의 주문 상품을, 1개의 ..
a. 객체 설계 단계에서는 단방향 연관관계로 끝내야 한다. 단방향으로만으로도 관계 매핑이 완료된거임 → 양뱡향으로 해버리면 객체 입장에서 고려할것이 많아짐양방향은 사실 단방향의 2개일 뿐테이블 설계하면서 객체 설계 같이 진행할 것 → 이미 테이블간의 관계는 이미 정해짐무엇이 1:1 관계이고, 1:N 관계인지 N:M 관계인지는 테이블 설계하면서 나올것임 이때 → 외래키를 갖고 있는 객체가 주인으로 단방향 연관관계 맺으면 됌다중성이 헷갈릴때에는 반대로 생각해보기다중성 : @ManyToMany 인지, @OneToMany인지..실무에서 다대다는 지양해야함!양방향은 언제 ?설계 단계에선 하지 않음, 실무하다가 정말 필요하다 생각되면 그 때 추가하면 된다.테이블 수정할 필요도 없고! (테이블 영향도 없음) mapp..
값 입력받기 사용자가 직접 값을 입력할 때, System.in.read(), Scanner 를 사용할 수 있다. System.in.read() Scanner 1. System.in.read() 사용법 //System.in.read() 입력 받기 //정수, 문자 다 저장하는데, char 로 저장된 값은 아스키코드로 저장 import java.io.IOException; public class Main{ public static void main(String[] args)throws IOException{ char c1 = System.in.read(); } } 2. Scanner 사용 법 //Scanner 객체는 유니코드로 문자를 입력받는다. import java.util.Scanner; public cl..

https://www.w3schools.com/bootstrap/bootstrap_tabs_pills.asp Bootstrap Tabs and Pills W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more. www.w3schools.com 이 페이지에 대한 공부기록입니다 부트스트랩 3 기준입니다. 1. 탭 생성하기 시작 2 3 1. 탭 생성하기 2. 현재 페이지 active 표현 2. 드롭다운 메뉴가 있는 탭..
- Total
- Today
- Yesterday
- 코딩
- 유스케이스
- Spring
- 안드로이드
- 개인프로젝트
- 스프링
- web
- 깃
- 이클립스
- set
- 자바
- 코드업
- 기초100제
- 객체지향
- 백엔드
- 레이아웃
- UML
- java
- 객체지향모델링
- 파이썬기초
- 코드업기초
- JPA
- eclipse
- sourcetree
- laravel
- sql
- 다이어그램
- 자바기초
- 파이썬
- 모델링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |