전체 글 (130) 썸네일형 리스트형 [spring boot] test시 (H2 DB의) 메모리모드 사용 test할 때 DB까지 왔다갔다하기 번거롭다면, 메모리를 사용하자. (DB를 꺼놔도 Test 실행가능) 1. H2 DB 메모리 모드사용 main>resources > application.yml 을 복사해 test > resources > application.yml에 붙이고 url만 변경하기(아래 참고) //test > resources > application.yml 내용 spring: datasource: url: jdbc:h2:mem:test username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show_sql: true format_sql: tru.. [spring boot] 3차 정리 (프록시, 즉시 로딩, 지연 로딩) 프록시 쓰는 이유 member조회하는데 아주 가끔만 team까지 조회하고 보통은 name만 조회할때 team을 계속 조회하는건 낭비니까! ----------------------- 1. getReference하면 프록시 생성 2. getName()호출 : proxy target이 null이면 영속성 컨텍스트가 DB를 조회하고 실제 entity를 생성해 proxy와 연결해줌. proxy target이 있으면 실제 entity인 target에 연결돼 속성 사용가능 초기화 : DB를 통해 진짜 entity를 만들어내는 과정 --------------------------- proxy의 타입은 instanceof를 사용해야함. (ex. m1 instanceof Member) em.find() -> em.getR.. [spring boot] 2차 정리 (연관관계 매핑 기초, 다양한 연관관계 매핑, 고급 매핑) 단방향 연관관계 persist하면 pk값 생성됨. 객체를 DB에 맞춰 셋팅하면 문제 생김 : MEMEBER 첫번재 데이터_ID가 2인 이유: 공용 sequence를 사용해서 TEAM의 첫번째 데이터 _ID가 1이기 때문에...! => 따로따로 ID를 1부터 사용하려면 식별자 맵핑해주면 됨. ------------ 객체지향 : 객체를 참조해서, 객체 대상으로 쿼리 (JPQL) DB : 외래키를 가지고, 테이블 대상으로 쿼리 (SQL) MEMBER는 객체인 TEAM을 가지고 있지만 DB는 TEAM의 키를 가지고 있음. MEMBER의 팀을 b팀으로 바꾸면 jpa는 객체가 바뀌는데 DB는 키값만 바뀜 ---------- persist 하고 바로 find 하면 1차캐시에서 들고오기 때문에 select 쿼리 안 날.. [spring boot] 1차 정리(jpa 시작, 영속성관리, 엔티티 매핑) 준영속 상태 tx.commit(); : 쿼리 날리기. 맨 마지막에 한번만 실행하면 됨. detach : 준영속 상태로 만듦 setName으로 name을 변경하고 detach를 하면 setName때문에 select 쿼리는 날라가지만 commit 때 setName으로 인한 update 쿼리는 안 날라감. detach를 함으로써 영속성 컨텍스트를 날려버린 것. (변경 감지 일어나지 않음) 객체와 테이블 매핑 @Table(name = "MBR") public class Member{ } 는 table명을 MBR로 정한다. MBR table과 맵핑되어 쿼리가 insert 쿼리 from MBR; 로 날라감. 데이터베이스 스키마 자동 생성 application 로딩시 DB를 자동으로 생성해 객체중심으로 개발가능. -.. [spring boot] flush란? persist, flush, commit 비교 플러시(flush)란? 영속성 컨텍스트의 변경내용을 DB에 반영하는 것. 영속성 컨텍스트(1차 캐시)를 비우지 않음 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화 (변경감지) 트랜잭션이라는 작업 단위가 중요 -> 커밋 직전에만 동기화(flush) 하면 됨 (commit 하면 자동으로 flush 먼저 실행) 플러시 모드 옵션 (보통 AUTO, 건들지 X) em.setFlushMode(FlushModeType.COMMIT) FlushModeType.AUTO : 커밋이나 쿼리를 실행할 때 플러시 (기본값) FlushModeType.COMMIT : 커밋할 때만 플러시 persist, flush, commit 비교 em.persist(entity); 1차 캐시에 저장 및 쓰기 지연 SQL 저장소에 SQL 쌓음.. [spring boot] 영속성 컨텍스트 영속성 컨텍스트란? application과 DB사이에 논리적으로 존재하며, 엔티티를 영구 저장하는 환경을 뜻함. EntityManager.persist(entity); entity를 영속성 컨텍스트에 저장한다. EntityManager 속에 있는 영속성 컨텍스트를 통해 entity가 관리된다. 쓰기 지연 SQL 저장소에 SQL을 쌓는다. 이점 1차 캐시 동일성(identity) 보장 트랜잭션을 지원하는 쓰기 지연 (transactional write-behind) 변경 감지(Dirty Checking) 지연 로딩(Lazy Loading) 엔티티의 생명주기 비영속 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 더보기 //객체를 생성한 상태(비영속) Member member = new Member(); m.. [Spring boot] H2 DB 연결 & JPA 실행 & 기타 설정, JPQL이란? H2 DB 연결준비 1. pom.xml (library 셋팅) 4.0.0 jpa-basic ex1-hello-jpa 1.0.0 1.8 1.8 org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 1.4.199 javax.xml.bind jaxb-api 2.3.0 더보기 hibernate version 찾기 spring > spring boot > LEARN > Reference Doc. > Dependency Versions > (ctrl+f) org.hibernate 검색 오른쪽에 버전 확인 후 작성 H2 DB 버전 찾기 설치된 h2 DB와 같은 version으로 작성 설치할 때 Download 아래 써있는 version 확인 2. .. [Node.js] 프로젝트 생성 및 mongoDB 연결하기 프로젝트 생성 및 설정 1. 프로젝트 시작하기 (내 프로젝트 package화) npm init 더보기 ( * 괄호 안에 값이 있으면 엔터를 쳤을 때 자동으로 설정됩니다. * ) name : 프로젝트 이름 version : 버전 description : 설명 (직접 쓰기를 권장) entry point: 어떤 js파일이 package를 구동시키는 첫 시작인지 test command : TDD(Test Driven Development : 테스트 주도 개발)를 할 때 test를 실행시킬 명령어 git repository : git repo 주소 1-1. 이미 client가 있다면 server 폴더를 만들고 cd server 2. express와 nodemon, mongoose 설치 npm install exp.. 이전 1 ··· 12 13 14 15 16 17 다음