| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 스프링부트
- 스프링
- jsp
- 백엔드
- 자바
- 데이터베이스
- spring
- Next.js
- jpa
- 미니정리
- 정리
- oracle
- 알고리즘
- 디자인 패턴
- 자바스크립트
- 코드테스트
- 코드 테스트
- 프런트엔드
- JavaScript
- node.js
- web
- 서버
- SQL
- 프론트엔드
- BACK-END
- MySQL
- 프로그래머스
- 오라클
- java
- 쿼리
- Today
- Total
목록분류 전체보기 (357)
참치코더의 꿈 메모장
- 오늘 개인 프로젝트 진행하면서 DB를 수정하면 관련 전체 코드를 수정해야 해서 데이터 최초 생성 시간이랑 수정 시간을 어떻게 해야할지 고민하다가 관련 내용을 찾아서 정리를 해보았다. - 일단 결론은 데이터베이스 생성, 수정 시간은 모든 테이블에서 사용하므로, 공통 엔티티를 만들어서 상속 받아 사용하면된다. 시간 뿐만 아니라 공통적으로 필요할것 같은 컬럼은 공통 엔티티에서 처리를 하면 된다. ^^ 123456789101112131415161718192021222324252627282930313233343536373839404142434445// 1. @EnableJpaAuditing 추가// 일단 전역으로 공통 엔티티를 사용하려면 스프링 부트 main 위에 @EnableJpaAuditing을 추..
어댑터 패턴 - 어댑터 패턴은 호환되지 않는 인터페이스를 가진 클래스를 클라이언트가 원하는 인터페이스로 변환해 주는 구조적 디자인 패턴이다. 필요한 이유 - 이미 있는 라이브러리/레거시 코드와 새 코드의 인터페이스가 다를 때- 외부 API가 제공하는 시그니처를 바꾸지 못할 때- 클라이언트 코드는 변경하지 않고도, 다른 구현을 끼워 넣고 싶을 때 어댑터 패턴을 사용하는 2가지 방법 - Object Adapter (조합 방식) : 어댑터가 Adaptee 인스턴스를 가지고 Target 인터페이스 구현, 대부분의 언어에서 권장되는 방식 - Class Adapter (상속 방식): 어댑터가 Adaptee를 상속하고 Target을 구현하는 방식, 다중 상속이 가능한 언어에서만 완전하게 지원한다.1234567..
1234SELECT ANIMAL_TYPE, COUNT(*) FROM ANIMAL_INSGROUP BY ANIMAL_TYPEORDER BY ANIMAL_TYPE ASC;cs - 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 구하는 문제이다. - 일단 동물 보호소 테이블을 FROM절로 불러오고- 해당 ANIMAL_TYPE을 GROUP BY문을 사용하여 각각 동물 카테고리 별로 그룹핑을 해주었다. - 출력하려고 하는 ANIMAL_TYPE, 해당 ANIMAL_TYPE의 전체 개수를 구해야 하므로 COUNT(*) 를 사용하여 전체 카테고리별 동물의 수를 셈 해주었다. - 마지막으로 오름차순 순으로 출력을 하라고 했으므로 ANIMAL_TYPE을 ASC로 정렬해 주었다. - 이렇게 코드를 작성한다면..
IDENTITY 전략 - DB(AUTO_INCREMENT)가 insert 실행 시점에 PK를 만들어줌- 따라서 em.persist(entity) 하면 JPA는 즉시 insert 쿼리를 날림 (flush 강제 발생)- 그 insert 결과로 생성된 PK를 가져와서 엔티티 객체에 채워 넣음 -> 이러한 이유들 때문에 배치 insert(모여서 한 번에 쓰기)가 잘 안 됨.-> JPA 1차 캐시나 영속성 컨텍스트에서 ID를 바로 알아야 하니까 insert를 바로 실행 한다. SEQUENCE 전략 - 오라클 / PostgreSQL처럼 DB가 시퀀스 객체를 지원하는 경우 사용할 수 있다.- em.persist(entity) 하면 insert 전에 먼저 시퀀스에서 PK를 뽑아온다.- JPA가 그 값을 엔티티에 할당한..
Next.js는 파일 기반 라우팅(File-based Routing)을 사용한다.app/ 디렉토리에 파일을 만드는 것만으로 자동으로 라우트(URL)이 생성된다. app/ㅏpage.tsx -> / (루트, 홈페이지 메인)ㅏabout/ ㅏ page.tsx -> /aboutㅏ blog/ ㅏ page.tsx -> /blog ㅏ [id]/ ㅏ page.tsx -> /blog/123 (동적 라우트) - page.tsx : 파일이 실제 웹페이지가 된다. - layout.tsx를 추가하면 하위 라우트에 공통 레이아웃이 적용 가능하다. - not-found.tsx, 잘못된 경로를 입력하거나 페이지 에러가 발생하면 적용되는 페이지 - layout.tsx는 가장 밖 ap..
1234567-- 코드를 입력하세요SELECT FH.FLAVORFROM FIRST_HALF FHJOIN ICECREAM_INFO IION FH.FLAVOR = II.FLAVORWHERE FH.TOTAL_ORDER > 3000 AND II.INGREDIENT_TYPE = 'fruit_based'ORDER BY FH.TOTAL_ORDER DESC;Colored by Color Scriptercs - 상반기 아이스크림 총주문량이 3000보다 높으면서 아이스크림의 주 성분이 과일인 아이스크림의 맛을 구하는 문제이다. - FIRST_HALF에 총 주문량, INGREDIENT_TYPE에 어떤 맛 베이스인지 데이터가 각각 나와 있으므로 값을 구하기 위해 JOIN ON을 통해 두 테이블의 공통 칼럼인 맛 컬럼을 통해..
영속성 컨텍스트 - 엔티티를 영구 저장하는 환경, 엔티티 매니저로 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. - 엔티티 매니저를 통해 영속성 컨텍스트에 접근할 수 있고, 영속성 컨텍스트를 관리할 수 있다. 영속성 컨텍스트 특징 - 영속성 컨텍스트는 엔티티를 식별자 값으로 구분한다. (엔티티 객체의 필드값 == 영속성 컨텍스트의 구분값) - 영속성 컨텍스트는 내부 지연 데이터베이스에서 사용자가 트랜잭션 범위 내에서 변경된 sql 쿼리 문을 가지고 있다가 트랜잭션을 커밋한 순간 해당 데이터가 데이터베이스에 완전히 반영된다. (tx.commit(); -> 영속성 컨텍스트 내부에서 flush(); 실행) - em.find(Member.class, "member1")..
12345-- 코드를 입력하세요SELECT BOOK_ID, TO_CHAR(PUBLISHED_DATE, 'YYYY-MM-DD') AS PUBLISHED_DATEFROM BOOKWHERE TO_CHAR(PUBLISHED_DATE, 'YYYY') = 2021 AND CATEGORY = '인문'ORDER BY PUBLISHED_DATE ASC;Colored by Color Scriptercs - 서점에서 판매중인 2021년에 출판된 인문 카테고리에 속하는 도서 리스트를 출력하는 문제이다. - BOOK 테이블에서 WHERE에 TO_CHAR을 사용해 년도가 2021년인 책 AND 카테고리가 인문인 서적을 찾도록 작성하였고,- 문제에서 요구한 컬럼인 BOOK_ID, 년도, 월, 일이 출력되는 PUBLISHED_..