🛠 엔티티 매핑 JPA 에서의 중요한 점 동작 방식 데이터 베이스와 객체를 어떻게 연관지을 것인가? (mapping 할 것인가?) 결국 JPA 에서 지원하는 Annotation들을 잘 알고 잘 사용해야 안전하게 매핑이 가능하다 🚀 객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리하고 엔티티라고 부른다. JPA를 사용하여 테이블과 매핑할 클래스는 @Entity가 필수다. ❌ 조건 기본 생성자가 필수(public 또는 protected) final 클래스, enum, interface, inner 클래스 사용 불가 저장할 필드에 final 사용 불가 🖥 @Entity 의 코드 @Documented @Target({ElementType.TYPE}) @Retention(Retenti..
🤔 JPA 의 핵심 영속성 컨텍스트 JPA 의 핵심 2가지 JAVA 의 객체와 관계형 데이터베이스 와의 Mapping 을 HOW? 영속성 컨텍스트 (1차 캐시) 항상 날 괴롭게 한다.. 영속성 컨텍스트 (persistence Context) ❌ 영속성 컨텍스트 != 데이터 베이스 (임시 저장소라고 생각하자) 논리적인 개념 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 엔티티 매니저당 하나의 영속성 컨텍스트를 가진다 J2EE 환경에서는 영속성 컨텍스트가 하나의 엔티티 매니저로 관리되는 것은 아니다 같은 트랜잭션 안에서는 사용하는 EntityManger끼리 같은 영속성 컨텍스트를 공유 영속성 대상 (Entity) 의 상태 비영속 상태 영속 상태 준영속 상태 삭제 ❗ 중요한 점은 영속 상태이다. 마치 data..
🔨 jpa 시작 JPA 설정파일 persistence unit : 주로 데이터 베이스 하나당 하나로 만든다. unit 이름으로 구분하게 된다. properties : 필수 속성, 옵션 속성들 기입 Connection 정보 기입 (driver, user, password, url) dialect 데이터 베이스 방언 기입 각각의 데이터 베이스 마다 제공하는 SQL 문법과 함수가 조금씩 다르기 때문 options 로그 찍어주기, table 생성 방식, 등등 ✅ 스프링에서는 persistence.xml 보다는 주로 yml로 관리 된다. 🛠 그래서 어떻게 사용해? 설정한 persistence unit name 으로 Entity Manager Factory를 생성 EntityMangerFactory에서 entity..
1043 파이썬으로 union - find 를 통해 해결 거짓말을 할수 있는 사람과 아닌 사람으로 그룹을 2분화 할 수 있다. 2개의 집합은 서로소의 관계이다. 따라서 union - find 알고리즘을 통해 문제를 해결한다. Union & Find? node 에 대해 배열을 선언한 후에 (굳이 트리로 구현을 할 필요는 없다) parent ( 자기 위의 조상을 만들 리스트 ) 를 생성 후에 자신의 parent 노드를 담는다 초기 값으로는 자기 자신이다. Find 함수를 통해 자신의 최고 root를 찾고 같은 집합으로 만들 다른 노드를 union한다. 코드로 살펴보자 # Find def find(a): global parent if(parent[a] == a): return a else: find(paren..
다익스트라 사용할 때 그냥 큐에서 직접조회 방식으로 우선순위가 높은( 그리디 방법 으로 볼 수도 있다 ) 가격이 싼 노드를 찾아와서 문제를 해결했었는데 간단하게 우선순위 큐를 사용하면 문제를 더 쉽게 해결 할 수있다. 물론 시간적으로 우선순위 큐가 더 안좋다는 이슈를 얼핏 들은 것같기도 하지만 가지고 있는 라이브러리를 최대한 이용하는 게 중요하다고 생각한다. 우선 순위 큐란? 우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조 이다. 데이터를 우선순위에 따라 처리하고 싶을 때 사용한다. 대표적으로 나누어서 보자 자료구조 추출되는 데이터 스택(Stack) 가장 나중에 삽입된 데이터 큐(Queue) 가장 먼저 삽입된 데이터 우선순위 큐(Priority Queue) 가장 우선순위가 높은 데이터 pop을..
완전 쌩 초보일 때부터 지금 까지 (지금도 초보이기는 하나) 스프링을 공부하면서 앱의 구조에 대해 정말 고민을 많이 했었다. 오늘 프로젝트를 완전히 갈아 엎을 일이 생겼는데, (완전 초짜일 때 해보던 프로젝트) 그때 당시에도 Controller와 Service 계층을 어떤 것에 의존해야 할지 고민을 정말 많이 했었다. 당시에는 팀 회의를 통해서 페이지 별로 짜는 것이 옳지 않겠느냐로 결론이 났었는데, 페이지 별로 api를 설계하였더니 각기 다른 페이지에서 비슷한 역할을 하는 api를 통합하지 못하는 기이한 현상이 일어나는 것을 보고 도메인 설계를 하는 것이 더 좋지 않았을까 하는 결론이 나게 되었다. 물론 지금도 이것이 확신이 드는 상황은 아니지만 어느 정도 이게 맞다는 느낌이 들기는 한다. 아무튼 오늘..
연산 10억번 넘어가는 것 같으면 그건 잘못 되었다. 코드 연산시간 측정해보기 import time start_time = time().time() #측정 시작 # #프로그램 소스코드 # end_time = time.time() #측정 종료 print("time:", end_time - start_time) #수행 시간 출력 파이썬 자료형 보기 1. 문자열 문자열 변수를 초기화 할 때는 ", ' 를 사용 "를 쓸때는 '를 포함 가능 하고 "를 표현하고 싶으면 \를 앞에 두어 \"로 사용한다. 문자열 변수에 덧셈을 이용하면 Concatenate 가 된다. 양의 정수를 곱하는 경우 그 값만큼 여러 번 더해진다. 문자열에 대해서도 마찬가지로 인덱싱과 슬라이싱을 이용할 수 있다.( 단 특정 인덱스 값을 변경할 ..
- Total
- Today
- Yesterday