일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코프링
- ja async
- Flutter
- spring gradle 모듈
- JPA플러쉬
- 스프링부트
- javascript fetch
- JPA
- 코틀린 클래스
- javascript api 호출
- javascript async await
- jpa준영속
- js api 호출
- JPA플러시
- jpa 영속성
- JPA준영속 상태
- JavaScript
- gradle 모듈 프로젝트
- 준영속상태
- JS
- springboot 모듈
- jpa 플러시
- spring 모듈 프로젝트
- jpa 플러쉬
- js async await
- js await
- 코틀린
- javascript async
- js fetch
- springboot gradle 모듈 프로젝트
- Today
- Total
목록전체 글 (54)
매일 한줄 코딩
5. 엔티티 매핑 1. 필드와 컬럼 매핑 객체와 테이블 매핑: @Entity, @Table 필드와 컬럼 매핑: @Column 기본 키 매핑: @Id 연관관계 매핑: @ManyToOne,@JoinColumn @Entity 기본값: 클래스 이름을 그대로 사용(예: Member) 같은 클래스 이름이 없으면 가급적 기본값을 사용한다. @Table 엔티와 매핑할 테이블 지정 옵션 name : 매핑할 테이블 명을 기입 catalog ,schema : 데이터베이스 catalog , schema 매핑 uniqueConstraints(DDL) : DDL생성시에 유니크 제약 조건 생성 @Table(uniqueConstraints = {@UniqueConstraint( name = "NAME_AGE_UNIQUE", colu..
특징 영속 → 준영속 영속 상태의 엔티티가 영속성 컨텍스트에서 분리 (detached) 영속성 컨텍스트가 제공하는 기능을 사용 못함. 준영속 상태로 만드는 방법 em.detach(entity) 특정 엔티티만 준영속 상태로 전환 Member member = em.find(Member.class, 1L); member.setName("abc"); em.detach(member); // 변경된 내용이 수정된 쿼리가 날아가지 않음. Member member2 = em.find(Member.class, 2L); member2.setName("updateName"); // 해당건은 업데이트가 실행이 된다! tx.commit(); em.clear() 영속성 컨텍스트를 완전히 초기화 테스트 케이스 작성할때 보통 눈으로..
3. 플러시 플러시란 ? 영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는 것 플러시 발생하면? 변경 감지 수정된 엔티티 쓰기 지연 SQL 저장소에 등록 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시하는 방법 em.flush() 플러쉬를 하더라도, 1차캐시는 없어지지 않음, 쓰기지연 SQL 저장소에 등록된 쿼리를 데이터베이스에 반영하는 과정일 뿐. 트랜젝션 커밋 ( 플러시 자동 호출) JPQL 쿼리 실행 ( 플러시 자동 호출 ) em.persist(memberA); em.persist(memberB); em.persist(memberC); query = em.createQuery("select m from Member m", Member.cl..
2. 영속성 컨텍스트 영속성 컨텍스트란? 엔티티를 영구 저장하는 환경 이라는 뜻 영속성 컨텍스트는 논리적인 개념 눈에 보이지 않음 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 0.영속성 컨텍스트의 이점 애플리케이션이랑 데이터베이스 사이에 무언가의 상태가 있다. (영속성 컨텍스트) 1차 캐시 동일성(identity) 보장 트랜잭션을 지원하는 쓰기 지연 (transactional write-behind) 변경 감지 (Dirty Checking) 지연 로딩(Lazy Loading) 등등 의 이점을 가진다. 1. 1차 캐시 1-1. 엔티티 조회, 1차 캐시 //객체를 생성한 상태 (비영속) Member member = new Member(); member.setId("member1"); member.setUs..
아래의 구조와 같이 현재 하바쪽 플래닛관련 프로젝트를 생성했습니다. 큰 구조는 project-module (가칭 명칭은 알아서 바꾸시면 됩니다. ) 이라는 껍데기 (부모모듈)이 하위 모듈을 감싸는 형태로 개발되어있습니다. 모듈화의 장점중 하나는 공통적으로 쓰이는 model(entity, request, response 등) 객체와, util 등을 한곳에 두고 추후 빌드시 jar화 되어 각각 프로젝트에 포함되어 사용하기 때문에 한곳만 수정하면 공통적인 부분은 모두 반영할 수 있습니다. 즉, project-module은 gradle module 프로젝트입니다. project-module(parents) : 하위 모듈을 감싸기위한 root 프로젝트라고 보시면 됩니다. project-module 프로젝트에는 하..
6. API & fetch open API를 활용한다. ( jsonplaceholder ) api 호출. let response = fetch("https://jsonplaceholder.typicode.com/posts").then((res) => console.log(res) ); // Promise 리턴이기 때문에, 비동기처리 가능 / then 사용 가능. // fetch는 API의 내용 전체를 리턴함. /* Response {type: "cors", url: "https://jsonplaceholder.typicode.com/posts", redirected: false, status: 200, ok: true…} type: "cors" url: "https://jsonplaceholder.typ..
1. async function hello() { return "shipjh Hi~"; } **async** function helloAsync() { return "Hi async"; } console.log(hello()); //shipjh Hi~ console.log(helloAsync()); // Promise {} 반환 async 를 붙인 함수는 Promise를 반환했다. 그렇다면.. then 을 쓸수있다. async function helloAsync() { return "Hi async"; // resolve의 효과 } helloAsync().then((res) => { console.log(res); // Hi async }); 💡async 를 사용한 함수는 Promise 를 반환한다.! ..
4. Promise 1. 콜백지옥2. 비동기 작업이 가지는 상태 3가지3. Promise 사용4. 기존 코드 콜백지옥에서 Promise 이용하여 벗어나기 1. 콜백지옥비동기방식의 콜백이 깊어지는 것 ⇒ 콜백지옥자바스크립트의 비동기를 돕는것 ⇒ Promise 아래처럼 콜백 지옥에 빠질 수 있다.//콜백에 콜백에 콜백... taskA(4, 5, (a_res) => { console.log("A result ", a_res); taskB(a_res, (b_res) => { console.log("B result ", b_res); taskC(b_res, (c_res) => { console.log("C result ", c_res); }); }); }); //... 2. 비동기 작업이 가지는 상태 3가지Pen..
3. 동기 / 비동기 동기와 비동기 코드1. 동기2. 비동기2-1. 비동기 콜백지정JS Engine1. 동기방식에서 Call Stack2. 비동기 방식에서 Call Stack 동기와 비동기 코드자바스크립크는 싱글스레드로 동작한다. (동기 혹은 블로킹방식)동기적 작업을 극복하기위해 비동기(논블로킹방식)방식을 사용한다. 1. 동기function taskA() { console.log("A 작업 끝"); } taskA(); console.log("끝"); //taskA() 가 끝나야 실행. /* A 작업 끝 끝 */ 2. 비동기function taskA() { setTimeout(() => { console.log("A 작업 끝"); }, 2000); // 콜백함수를 이용하여 2초뒤 } taskA(); con..
객체나 배열에 있는 값을 펼쳐준다. const sedanCar = { type: "sedan" }; const bmw = { type: "sedan", madeIn: "germany", name: "bmw 320d" }; const honda = { type: "sedan", madeIn: "japan", name: "CR-V" }; // type이 모두 sedan. 중복된코드... console.log(bmw); // {type: "sedan", madeIn: "germany", name: "bmw 320d"} console.log(honda); // {type: "sedan", madeIn: "japan", name: "CR-V"} spread 를 이용한다면? 객체를 펼쳐주므로 …sedanCar 를 ..
1. 비 구조화 할당 1. 배열의 비 구조화 할당1-1. 스왑2. 객체의 비 구조화 할당 1. 배열의 비 구조화 할당코드로 설명한다.let arr = [1, 2, 3]; let [one, two, three] = arr; console.log(one); //1 console.log(two); //2 console.log(three); //3더 간단히let [one, two, three] = [1, 2, 3]; console.log(one); //1 console.log(two); //2 console.log(three); //3 배열의 선언하면서 default 값으로 세팅도 가능하다.let [one, two, three, four] = [1, 2, 3]; console.log(one); //1 conso..
9. 배열 내장 함수 1. forEach (순회)2. map (값 새롭게 처리)3. includes (배열에 포함된지 확인)4. indexOf (배열에 포함되었다면 index 리턴)5. findIndex (조건에 해당하는 객체내 값의 index를 리턴)6. find ( 조건에 일치하는 element 통으로 가져오기 )7. filter (필터링 해서 가져오기)8. slice (배열 자르기)9. concat (배열 붙이기)10. sort (배열 정렬하기)11. join(문자열 합치기) 1. forEach (순회)let arr = [1, 2, 3, 4, 5]; // 기존 방식. for (let i = 0; i console.log(l)); 2. map (값 새롭게 처리)let arr = [1, 2, 3, 4,..
1. 객체을 뽑아서 반복문 돌리기. 1-1. Object.keys(Object) 를 이용한다. ( 객체의 키를 뽑는다. ) let member = { name: "배재현", age: 32, gender: "MAN" }; const memberKeys = Object.keys(member); // 키를 배열 형태로 반환해서 돌려준다. console.log(memberKeys); // ["name", "age", "gender"] for (let i = 0; i < memberKeys.length; i++) { const value = member[memberKeys[i]]; // 값을 뽑아 낼 수 있다. console.log(value); // 배재현, 32, MAN } 1-2. Object.values(..
7. 배열 1. 선언(생성) 방식 2. 접근 방식 3. 배열 추가 4. 배열 길이 1. 선언(생성) 방식 let arr = new Array(); let arr = []; // 배열 리터럴 let arr1 = [1,2,3,4]; let arr2 = [1,"2",true,null,undefined,{},[], function(){}] // 별에 별 타입 다 들어감. 2. 접근 방식 let arr = [1,2,3,4,5]; arr[0] arr[1] arr[2] 3. 배열 추가 push 사용. 가장 마지막에 추가가 된다. let arr = [1,2,3,4,5]; arr.push(6); arr.push({name: "shipjh"}); // Object 추가. 4. 배열 길이 배열.length 를 사용한다. ❗..
6. 객체 1. 객체 선언1-1. 선언 방식1-2. 객체 프로퍼티 접근1-3. 객체내부 프로퍼티 새로운 값 생성, 수정, 삭제1-4. 객체 내부의 함수 사용1-5. 객체 내부의 프로퍼티 확인 in1. 객체 선언1-1. 선언 방식// 객체 생성자 방식 let member = new Object(); // 객체 리터럴 방식 let member2 = {}; // key:value 의 형태 let member3 3 { key1 : "value1", key2 : "value2" //... } // 별에별 타입이 다 들어감. let member4 = { name: "배재현", age: 23, live: true, child: undefined, car: ["benz", "bmw"], getName: function..
// 메서드 파라미터로 함수화 한다. 이 파라미터는 구현부 내부에는 함수처럼 사용이 가능하다. function checkNumber(num, **oneNumber, twoNumber, emptyNumber**) { if (num === 1) { **oneNumber**(); } else if (num === 2) { **twoNumber**(); } else { **emptyNumber**(); } } function **one**() { console.log("one!"); } function **two**() { console.log("two~"); } function **nothing**() { console.log("nothing@@@"); } //미리 만들어둔 함수 자체를 메서드 파라미터로 전달..
4. 함수표현식 / 화살표 함수 1. 함수표현식 2. 화살표 함수 1. 함수표현식 let a = function () { return "배재현"; }; // 함수 표현식 function b() { return "shipjh"; } // 함수 선언식 함수 표현식과 선언식의 차이점. 선언식은 코드 위치에 상관없이 호출이 가능한 반면, 표현식은 표현식 작성 이전에 사용할 수 없다. console.log(b()); // shipjh 출력 // console.log(a()); // error. let a = function () { return "배재현"; }; console.log(a()); // 배재현 출력 function b() { return "shipjh"; } // 함수 선언식 2. 화살표 함수 // ..
3. 연산자 기본적인 사칙연산을 제외하고 자바스크립트의 특징만 기술하고자 한다. 비교 연산자 ( == , === )두 값을 비교하는 연산자.let a = 1; let b = "1"; console.log( a == b ) // true (값만 비교.) console.log( a === b ) // false (값과 타입만 비교.) typeof 연산자타입이 뭔지 확인하는 연산자.let a = 1; a = "1"; // 동적타입 언어는 유연하지만, 에러를 발생하는 원인이 되기도 한다. console.log(typeof a); // string null 병합 연산자 (??)?? 를 기준으로 앞뒤 값중 하나가 undifind 거나 null일 경우 값을 대체해준다.let a; a = a ?? 10; console..
2. 자료형 ( Primitive Type, Non-Primitive Type) 1. Primitive Data Type (원시 타입)2. Non-Primitive Data Type (비 원시 타입) 1. Primitive Data Type (원시 타입)하나의 고정된 저장 공간을 이용.한번에 하나의 값 만 가질 수 있음let age = 1; Number : 숫자형 타입 ( ex: 1 )그 외에도, Infinity (무한대), -Infinity (음의 무한대), NaN (수학적 연산실패) String : 문자형 타입 ( ex: “hello” )따옴표(”), 홑따움표(’), 백틱(`) 으로 표현한다.let name = "배재현"; let infomation = `저의 이름은 ${name} 입니다.` // =..
1. 변수와 상수 ( var, let, const ) 1. var 2. let 3. const 1. var 같은 변수명의 중복사용이 가능하다. ❗주의 : var a 란 값이 다른 곳에서 쓰일 수 있다. 그럼 덮어쓰기가 되는격. var a = 1; // ... 1000줄의 코드 var a = "aaa"; // 위처럼 사용이 가능하니, 사이에 가령 1000줄의 코드가 있을경우 a란 값이 이상하게 변경 될 수 있음. 2. let 같은 변수명의 중복사용이 불가하다. let a = 1; let a = "aaa"; // error. 3. const 상수이다. (변하지 않는 값) const a = 1; a = 1; // error. (read-only) const b; // error. (선언과 동시에 특정 값으로 ..