일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인플레이션
- 백준
- 알고리즘
- 주린이
- 제태크
- 자바
- 오버라이딩
- 주식
- FCF
- 객체지향
- 금리인상
- 잉여현금흐름
- Java
- 금리인하
- StringBuffer
- 현금흐름표
- S&P500
- 기업분석
- 미국주식
- 그리디 알고리즘
- 배당성장
- 다형성
- 무디스
- XLF
- javascript
- 접근제어자
- object
- 프로그래머스
- etf
- mco
- Today
- Total
목록분류 전체보기 (209)
오늘의하루
매핑의 소개 1. 객체와 테이블 매핑 : @Entity, @Table 2. 필드와 컬럼 매핑 : @Column 3. 기본 키 매핑 : @Id 4. 연관 관계 매핑 : @ManyToOne, @JoinColumn @Entity JPA가 관리할 수 있도록 지정해 주는 어노테이션이다. JPA를 사용해서 테이블과 매핑할 클래스는 필수로 작성해줘야 한다. 주의 사항 1. JPA를 사용해서 테이블과 매핑할 클래스는 기본 생성자가 필수로 존재해야한다. 2. 필드에 final 클래스, interface, inner클래스는 사용하지 말아야한다. 3. 저장할 필드에 final 사용을 하면 안된다. @Table 엔티티와 매핑할 테이블에 관련된 옵션을 지정할 수 있다. 1. name : 매핑할 테이블의 이름 지정 (기본값 : ..
JPA에서 flush 함수가 호출되면 쓰기 지연 SQL 저장소에 쌓여있는 쿼리가 DB 날아간다. 하지만 이때 마법같이 쌓여있던 쿼리가 한번의 요청으로 DB로 날아가지는 않는다. 만약 batch_size를 지정하지 않는다면 쌓여있는 개수만큼 DB와의 네트워크 통신을 하게 될 것이다. 하지만 batch_size를 지정한다면 쌓여있는 개수 중에 batch_size만큼 묶어서 쿼리를 날리기 때문에 한번의 네트워크 통신의 횟수를 줄일 수 있게 된다. 개인적인 생각으로 batch_size를 지정하지 않는다면 쓰기 지연 SQL 저장소를 사용되는 의미가 없어보인다.
EntityManagerFactory와 EntityManager EntityManagerFactory는 웹 애플리케이션에서 단 하나만 존재하며 EntityManager 객체를 생성할 수 있다. 영속성 컨텍스트 영속성 컨텍스트는 EntityManager를 통해서 접근이 가능하다. 처음 JPA를 접하는 경우 EntityManager와 PersistenceContext는 1:1 관계로 생각해야한다. Entity의 생명주기 1. 비영속 (new) : PersistenceContext와 전혀 관계없는 새로운 상태 Member member = new Member(); member.setId(1L); member.setName("JPA"); 2. 영속 (managed) : PersistenceContext에서 관리되..
JPA란? Java Persistence API의 줄임말이며 자바 ORM 기술 표준을 의미한다. ORM이란? Object-Relational-Mapping으로 객체 관계 매핑을 의미한다. 객체는 객체대로 관계형 DB는 관계형 DB대로 설계 ORM 프레임워크가 중간에서 매핑을 해준다. JPA를 사용하는 이유 1. SQL 중심적인 개발에서 객체 중심으로 개발이 가능하다. 2. 생산성이 높아진다. 3. 유지보수에 용이하다. 4. 패러다임의 불일치를 해결할 수 있다. 5. 성능 6. 데이터 접근 추상화와 벤더 독립성 JPA 설정 /META-INF/persistence.xml 파일을 만들어줘야한다. javax.persistence는 JPA 표준 속성을 의미한다. 이는 구현체(현재 hibernate)를 변경해도 그..
- 만든 이유 시간을 안보고 일하다 보면 점심시간인지 모르는 경우가 있기 때문이다. 이걸 모든 직원컴퓨터에서 실행하여 점심시간이 되면 다들 빨리 일어났으면 좋겠다. - 최종적으로 만들고자 하는 결과물 컴퓨터 부팅시 자동으로 실행되게 하여 점심시간에 화면이 잠겼으면 좋겠다. 아직 부팅시 자동 실행은 만들지 못하였다. [2023-12-26] 소스코드 package com.lunch.breakPoint; import java.io.IOException; import java.time.LocalDateTime; import java.util.Timer; import java.util.TimerTask; /*** * 점시시간 11:45에 화면 잠금을 하는 프로그램 * @author user * */ public ..
초기세팅 java = 1.8 spring boot = 2.7.14 db = oracle build tool = gradle 프로젝트 세팅하면서 알게 된 점 spring boot 버전을 낮추는 법 id 'org.springframework.boot' version '2.7.14' spring boot에서 java 버전을 낮추는 법 java { sourceCompatibility = '1.8' } spring boot에서 servlet 인코딩 관련된 속성의 의미 server.servlet.encoding.charset=UTF-8 server.servlet.encoding.force=true server.servlet.encoding.enabled=true force 속성 : 서블릿 요청 및 응답에 대해 강제..
주제 선정 수많은 주식 관련 API가 있지만 국내 상장 ETF에는 숨은 수수료를 알려주는 API는 아직 보지 못했다. 그래서 이번 미니 프로젝트의 주제는 국내 상장 ETF의 진짜 수수료를 알려주는 API 서버를 만들어 보려고한다. 자료 수집 우선 ETF의 정보를 알기 위해서 금융 투자 협회라는 사이트를 방문하였고 여기서 모든 ETF의 수수료를 확인할 수 있었다. 쉽게 여기서 제공 하는 API를 사용해서 자료를 받으려고 했지만 API가 없어서 자동화 수집을 하기로 생각했다. 필수 기능 API Service Key 발급 기능 - 메일 주소, 사용 목적, 닉네임등을 입력받은 후 Service key 발급 - 권한의 경우 관리자를 제외한 모든 사용자는 "NOMAL"이라는 권한을 준다. - 인증 / 인가의 경우 ..
Spring의 Service에 대하여... 핵심 비즈니스 로직이 들어있는 계층이다. 비즈니스 로직은 UI와 데이터 저장 기술이 변경되도 최대한 변경없이 유지되어야 하기 때문에 가급적 특정 구현 기술에 의존하지 않고 순수하게 유지하는 것이 좋다. 데이터 액세스 계층에서 Checked Exception을 UnChecked Exception으로 바꾸는 이유가 여기있다. Service에서는 특정 구현 기술에 의존하지 않아야 때문에 데이터 액세스 계층에서 발생하는 예외인 SQLException같은 Checked Exception이 Service 계층까지 넘어오는 것을 방지하는 것 입니다. 또한 Spring에서는 기본적으로 Uncheck Exception의 경우 트랜젝션을 rollback해주는 것을 Default값..
기본적으로 BasicErrorController는 기본적인 로직이 모두 개발되어 있다. 개발자는 룰과 우선순위에 따라서 등록만 하면된다 저장 위치 정적 HTML은 정적 리소스(resources/static/error/xx) 동적으로 오류화면을 만들땐 뷰 템플릿(resources/templates/error/xx) BasicErrorController의 처리 순서 뷰 템플릿에서 찾는다. 정적 리소스(static / public) 적용 대상이 없을때 뷰 이름 (error) - default default 오류 뷰의 위치는 resources/templates/error.html이다. 그외 기본적으로 명확한 이름 우선적으로 찾는다. 예시) 500.html, 5xx.html, 404.html이 있다면 500과40..
Exception 요청 > WAS > 필터 > 서블릿 > 인터셉터 > 컨트롤러(예외발생) > 인터셉터 > 서블릿 > 필터 > WAS 서버 내부에서 처리할 수 없는 오류가 발생했다고 생각하여 Http 상태코드 500 반환 response.sendError(Http 상태코드, 오류메시지) 요청 > WAS > 필터 > 서블릿 > 인터셉터 > 컨트롤러(sendError()) > 인터셉터 > 서블릿 > 필터 > WAS(sendError 호출 기록 확인 / 지정된 URL로 다시 요청) > (필터) > 서블릿 > 인터셉터 > 컨트롤러 > 뷰 sendError를 호출하면 response내부에는 오류가 발생했다는 상태를 저장한다. 서블릿 컨테이너는 응답하기 전에 response에 sendError가 호출되었는지 확인한다..