객체지향 쿼리 언어1 - 기본 문법
·
Study/Spring
JPQL테이블 대상이 아닌 엔티티 객체를 대상으로 쿼리한다. 따라서 SQL을 추상화하여 특정 데이터베이스 SQL에 의존하지 않는다.문법select m from **Member** as m where **m.age** > 18엔티티는 대소문자 구분 O, 키워드 구분 X테이블 이름이 아닌 엔티티 이름 사용별칭 필수!일반적으로 SQL 문법과 비슷함TypeQuery, Query반환 타입이 명확할 경우 , TypeQuery반환 타입이 불명확 할경우 , Query결과 조회 api try { Member member = new Member(); member.setUsername("member1"); member.setAge(10); em..
큐와 환형 규
·
Study/Algorithm
큐큐의 동작방식은 선입 선출(FIFO)이다.동작 방식동작방식의 도식화는 아래와 같다. enqueue() : 후순위로 밀어 넣다. - 복잡도 O(1)dequeue() : 선순위를 빼낸다. - 복잡도 O(n)배열에서의 dequeue()를 맨 앞의 원소를 빼면 다른 모든 원소를 한칸씩 이동해야하기 때문에 복잡도는 O(n)이다.→ 따라서 이를 해결하기 위해 환형 큐를 이용한다.사용처큐는 자료를 생성하는 작업과 그 자료를 이용하는 작업이 비동기적으로 일어나는 경우에 사용한다.  나도 프로젝트를 이용하면서 많은 Message queue를 사용해본적이 있으며, 실제로 네트워크 강의를 들으면서 패킷이 전송이 큐(버퍼)를 통해 이루어지는 것을 학습했었다.환형 큐배열에서 dequeue()의 복잡도(O(n))을 줄이기 위해..
값 타입
·
Study/Spring
값 타입 분류기본 값 타입자바 기본 타입 (int, double)래퍼 클래스 (Integer , Long)String임베디드 타입 (복합 값 타입)컬랙션 값 타입참고기본 값 타입은 공유되지 않는다. (값만 복사할 뿐, 참조해서 가져오지 않는다. / c언어의 *p를 이용한 값 변경을 생각해보자)래퍼클래스는 공유 가능한 객체지만 변경할 수 없다. (setter 또는 새로운 객체 생성 등을 이용하여 변경할 수 있지 “=”을 통해 자체적으로 변경할 수는 없다)클래스 객체 참조 값을 변경 시키키 때문에 변경된 값이 공유될 수 있다.임베디드 타입embedded - '내부에 탑재된' 의미를 가지고 있다. 여러 속성등이 나열되어 있는 엔티티를 embedded type 객체로 모아서 관리할 수 있다.사용법@Embedda..
후위 표기 수식 계산
·
Study/Algorithm
후위 표기 수식 계산이전 강의에서는 중위표현식을 후위 표기식으로 전환하는 알고리즘을 학습했다.이제는 전환된 후위 표기식을 스택을 이용해 계산해보자.스택 기반 후위 표기식을 이용하여 계산 효율성을 높일 수 있다는 것을 이해해보자.후위 표기식의 계산쉽게 생각해서 피연산자를 순차적으로 스택에 넣은 다음 연산자를 만날 경우 해당 피연산자를 연산하면 된다.계산 알고리즘 순서수식을 왼쪽부터 차례대로 스캔한다피연산자가 나타나면, 스택에 넣어 둔다.연산자가 나타나면 , 스택에 들어 있는 피연산자를 두 개 꺼내어 연산한다.그 결과를 스택에 다시 넣어 둔다.스캔이 끝나면 가장 마지막 값을 pop한다.실습 class ArrayStack: def __init__(self): self.data = [] ..
private static final
·
Study/Java
private의미: 해당 필드나 메서드가 선언된 클래스 내부에서만 접근 가능하다.클래스에 미치는 영향클래스의 캡슐화를 강화 한다 → 클래스의 내부 구현을 외부로 부터 숨긴다. → 데이터 무결성 및 메서드 사용방식을 보호한다.static의미: 해당 필드나 메서드가 인스턴스마다 별도로 존재하는 것이 아니라, 클래스에 속해 클래스 모든 인스턴스가 공유하는 하나의 요소임을 나타낸다.클래스에 미치는 영향스프링의 싱글톤 개념과 비슷하게 메모리 사용이 효율적이다.클래스 인스턴스를 생하지 않고도 이 필드나 메서드에 접근할 수 있다.public class Utility { public static final int CONSTANT = 100; public static void printMessage() { ..
복합 키: 키 처리 방법에 대한 가이드
·
Study/Java
복합키복합 키(Composite Key)는 두 개 이상의 컬럼을 결합하여 테이블에서 레코드를 고유하게 식별하는 데 사용되는 키이다.복합키를 사용하는 경우map 또는 Cache를 조회할 때 “키”를 정의하기 위해 데이터 조합이 필요한 경우이다. (사용자 이름에 따란 고유한 값을 저장하는 경우 등등,,) 문자열 결합 문제점//1 private String getMapKey(Long userId, String userLocale) { return userId + "." userLocale;}이러한 문자열의 할당은 당신이 얼마나 많은 키를 갖고 있는지에 크게 의존할 것이다.예를 들면 map에 자주 접근한다면 많은 수의 할당이 이루어지고 garbage collected이 필요해 질 수 있다.//2 publi..
프록시
·
Study/Spring
프록시 기초프록시 : 실제 클래스를 상속 받아서 만들어진다. 이 때 해당 객체를 참조를 보관할 뿐이다.em.find() vs em.getReference()em.find() : 데이터베이스를 통해 실제 엔티티 객체를 조회하는 것.em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 객체 조회DB에는 쿼리가 나가지 않지만 객체는 조회가 된다.실제로 사용될 경우에만 select문으로 조회된다.먼저 진짜 엔티티를 참조하는 Proxy 객체가 생성된다. 이후 영속성 컨텍스트에게 초기화 요청을 하면 DB에서 조회후 해당 Entity를 사용할 수 있게 되는 것이다.(Proxy가 진짜 엔티티가 되는 것이 아니라 DB에서 조회해온다는 것을 알아두자, 초기화는 처음 객체를 사용할 때 한번만 동작한다..
[이것이 코딩 테스트다] 3. DFS & BFS
·
Study/Coding-test
탐색(Search)이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 말한다.스택 자료구조먼저 들어온 데이터가 나중에 나가는 형식(선입후출,FILO)의 자료구조.입구와 출구가 동일한 형태로 스택을 시각화한다.입구가 하나 뿐인 통에 박스 쌓기 예시stack = []stack.append(5)stack.append(2)stack.append(3)stack.append(7)stack.pop()stack.append(1)stack.append(4)stack.pop()print(stack[::-1]) # 최상단 원소부터 출력print(stack) # 최하단 원소부터 출#실행결과[1, 3, 2, 5][5, 2, 3, 1]큐 자료구조먼저 들어온 데이터가 먼저 나가는 형식(선입선출, FIFO)의 자료구조.입구(..
다양한 연관관계 매핑
·
Study/Spring
강의 링크자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런연관관계 매핑시 고려사항 3가지다중성단방향 , 양방향연관관계의 주인 다중성다대일 : @ManyToOne일대다 : @OneToMany일대일 : @OneToOne다대다 : @ManyToMany단방향, 양방향테이블외래키 하나로 양쪽으로 조인할 수 있다. 따라서 사실 테이블은 방향이라는 개념이 없다고 볼 수 있다.객체참조용 필드가 있는 쪽으로만 참조가 가능하다. 따라서 방향이 존재하며, 한쪽만 참조하면 단방향 , 양쪽이 서로 참조하면 양방향이다.(서로가 단방향 관계를 맺고있다.)연관관계의 주인테이블은 외래 키 하나로 두 테이블이 연관관계를 맺는다. 하지만 객체의 양방향 관계는 서로가 단방향 관계를 맺고 있기 때문에 (A→B , B→A) 참조가 2군..