전체 글
-
JPA - 6. 프록시와 연관관계 관리Java 2020. 7. 25. 16:48
프록시 프록시 기초 - em.find() vs em.getReference() - em.find() : 데이터베이스를 통해서 실제 엔티티 객체 조회 - em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 프록시 특징 - 실제 클래스를 상속 받아서 만들어진다. - 실제 클래스와 겉 모양이 같다. - 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 된다. (이론상으로) - 프록시 객체는 실제 객체의 참조(target)을 보관한다. - 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드를 호출한다. - 프록시 객체는 처음 사용할 때 한 번만 초기화 - 프록시 객체를 초기화 할 때, 프록시 객체가 실제 엔티티로 바뀌는 것은 아님. 초기화 ..
-
JPA - 5. 상속관계 매핑Java 2020. 7. 25. 14:11
상속관계 매핑 - 관계형 데이터베이스는 상속 관계 X - 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속과 유사하다. - 상속관계 매핑이란 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑하는 것이다. 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 1. 각각 테이블로 변환하는 : 조인 전략 2. 통합 테이블로 변환하는 : 단일 테이블 전략 3. 서브타입 테이블로 변환하는 : 구현 클래스마다 테이블을 구현하는 전략 주요 애노테이션 1. @Inheritance(strategy = InheritanceType.XXX) - JOINED : 조인전략 - SINGLE_TABLE : 단일 테이블 전략 - TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 2. @Discrimin..
-
java - 6) 클래스Java 2020. 7. 20. 22:48
- 클래스의 개념 - 객체 지향 프로그래밍 (OOP, Object-Oriented Programming) 객체 지향 프로그래밍에서는 모든 데이터를 객체(object)로 취급하며, 이러한 객체가 바로 프로그램의 중심이 된다. 객체란 간단히 이야기 하자면 실생활에서 우리가 인식할 수 있는 사물로 설명할 수 있다. 이러한 객체의 상태(status) 와 행동(behavior)을 구체화하는 형태의 프로그래밍이 바로 객체 지향 프로그래밍이다. 이때 객체를 만들어 내기 위한 설계도와 같은 개념을 클래스(class)라고 한다. - 클래스 (class) 자바에서 클래스란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용된다. 자바에서는 이러한 설계도인 클래스를 가지고, 여러 객체를 생성하여 사용하게 된다. 클래스는 객..
-
java - 5) 배열Java 2020. 7. 19. 00:03
- 메모리 구조 모든 자바 프로그램은 JVM을 통해서 실행된다. 자바 프로그램이 실행되면, JVM은 운영 체제로부터 해당 프로그램을 수행할 수 있도록 필요한 메모리를 할당 받는다. 이렇게 할당받은 메모리를 JVM은 용도에 따라 다음과 같이 구분하여 관리한다. - 메소드 영역 메소드 영역은 자바 프로그램에서 사용되는 클래스에 대한 정보와 함께 클래스 변수(static variable)가 저장되는 영역이다. JVM은 자바 프로그램에서 특정 클래스가 사용되면 해당 클래스의 클래스 파일(*.class)를 읽어들여, 해당 클래스에 대한 정보를 메소드 영역에 저장한다. - 힙 영역 힙 영역은 자바 프로그램에서 사용되는 모든 인스턴스 변수가 저장되는 영역이다. JVM은 자바 프로그램에서 new 키워드를 사용하여 인스..
-
chapter3-Q3) 배열에서의 검색PS/etc 2020. 7. 13. 20:16
Q3) 요솟수가 n인 배열a에서 key와 일치하는 모든 요소의 인덱스를 배열 idx의 맨 앞부터 순서대로 저장하고, 일치한 요솟수를 반환하는 메서드 ex) 요솟수 8인 배열 a {1, 9, 2, 9, 4, 6, 7, 9}이고 key가 9면 배열 idx에 {1, 3, 7} 을 저장하고 3을 반환한다. /* 요솟수가 n인 배열a에서 key와 일치하는 모든 요소의 인덱스를 배열 idx의 맨 앞부터 순서대로 저장하고, 일치한 요솟수를 반환하는 메서드 ex) 요솟수 8인 배열 a {1, 9, 2, 9, 4, 6, 7, 9}이고 key가 9면 배열 idx에 {1, 3, 7} 을 저장하고 3을 반환한다. */ public class Q3 { public static void main(String[] args) { S..
-
검색 정리Algorithm 2020. 7. 13. 20:05
- 선형 검색 요소가 직선 모양으로 늘어선 배열에서의 검색은 원하는 키 값을 갖는 요소를 만날 때까지 맨 앞부터 순서대로 요소를 검색하면 되는데, 이를 선형 검색(linear search) 또는 순차 검색 (sequential search) 이라는 알고리즘이다. 배열 검색의 종료 조건) 1. 검색할 값을 발견하지 못하고 배열의 끝을 지나간 경우 2. 검색할 값과 같은 요소를 발견한 경우 선형 검색은 배열에서 순서대로 검색하는 유일한 방법이다. 선형 검색은 반복할 때마다 종료 조건 1,2 를 모두 판단한다. 단순한 판단이라고 생각할 수 있지만 종료 조건을 검사하는 비용은 결코 무시할 수 없다. 이 비용을 반으로 줄이는 방법이 보초법 (sentinel method)이다. 검색하기 전에 검색하고자 하는 키 값..
-
시큐리티 1부~2부Spring 2020. 7. 13. 15:50
- 시큐리티 의존성 추가시 인증되지 않은 사용자가 접근시 /login으로 리다이렉트 된다. (테스트 코드 포함) - 접속시 스프링부트 자동 설정에 의해서 username, pass 가 주어진다. 기본 username : user passowrd : 애플리케이션을 실행할 때마다, 랜덤하게 주어진다. - 테스트 코드에서 인증된 유저 정보가 주고싶을때 spring-security-test 의존성 추가, 위와 같이 @WithMockUser 추가 - SecurityConfig 설정 이전에 ConditionOnMissingBean이였는데 WebSecurityConfigurerAdapter를 상속받았으니 기존의 자동설정은 이제 적용되지 않는다. 이렇게 실행시, my 에서만 로그인을 요구한다. - UserDetailS..
-
데이터 7부 : 데이터베이스 초기화Spring 2020. 7. 13. 13:09
spring.jpa.hiberante.ddl-auto= create-drop : 처음에 생성 후 앱 종료시 제거 create : 지우고 새로 생성 update : 기존 스키마 유지, 추가 된것만 변경 validate : 맵핑 할수있는 상황인지 검증 spring.jpa.generate-ddl = false, true 위에서 설정한 옵션을 사용할지 말지 true / false 이렇게 설정하면 @Entity 정보를 바탕으로 스키마를 자동 생성한다. sql l찍히는게 보고싶다면 spring.jpa.show-sql = true 실제 애플리케이션 운영시에는 보통 validate, false로 사용한다 (검증) validate일때 entity를 변경하면 에러가 난다. update일때는 entity를 변경시 변경해서 ..