| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 29 | 30 | 31 |
- java
- 한국대학생it경영학회
- redis
- Domain Driven Design
- 모이삼
- 최범균
- 자바 ORM 표준 JPA 프로그래밍
- 백엔드
- GitHub Actions
- JPQL
- 도메인 주도 개발 시작하기
- 쿠버네티스
- 이펙티브자바
- 큐시즘
- springboot
- ddd
- 약속 장소 추천
- 모임 장소 추천
- kusitms
- JPA
- Container Registry
- RESTClient
- 객체지향 쿼리 언어
- Spring Batch
- 중간 지점 추천
- Spring
- cicd
- K3S
- 중간 장소 추천
- 불변객체
- Today
- Total
목록전체 글 (84)
코딩은 마라톤
목표 : 객체의 참조와 테이블의 외래 키를 매핑하는 것 단방향 연관관계 회원은 하나의 팀에만 소속될 수 있다. 회원과 팀은 다대일 관계다. - 객체 연관관계 회원 객체와 팀 객체는 단방향 관계 Member.team 필드로 팀 객체와 연관관계를 맺는다. member -> team의 조회는 가능, 반대는 불가 - 테이블 연관관계 회원 테이블은 TEAM_ID 외래키로 팀 테이블과 연관관계 맺는다. 회원과 팀 테이블은 양방향 관계 (회원, 팀 둘다 조인 가능) - 객체 연관관계와 테이블 연관관계 정리 객체는 참조(주소)로 연관관계를 맺는다. 참조를 사용하는 객체의 연관관계는 단방향이다. 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야 한다. 테이블은 외래 키로 연관관계를 맺는다. 외래 키를 사용하는..
@Entity 테이블과 매핑할 클래스는 필수로 붙여야 한다. 속성 기능 기본값 name JPA에서 사용할 엔티티 이름 지정 클래스 이름 주의사항 기본 생성자 필수 (@NoArgsConstructor) final 클래스, enum, interface, inner 클래스 사용 X 저장할 필드에 final 사용 X @Table 엔티티와 매핑할 테이블 지정 속성 기능 기본값 name 매핑할 테이블 이름 엔티티 이름 catalog catalog 기능이 있는 db에서 매핑 schema schema 기능이 있는 db에서 매핑 uniqueConstraints (DDL) DDL 생성 시 유니크 제약조건 생성. 2개 이상의 복합 유니크 제약 조건도 만들 수 있다. DDL을 만들 때만 사용. 데이터베이스 스키마 자동 생성 ..
엔티티 매니저 팩토리, 엔티티 매니저 엔티티 매니저 팩토리 // persistence.xml 코드의 EntityManagerFactory emf = Persistence.createEntityManagerFactory("{name}"); - 엔티티 매니저를 만드는 공장 - 공장을 만드는 비용은 상당히 크다. -> 한 개의 엔티티 매니저 팩토리를 만들어서 전체 애플리케이션에서 공유 - 여러 스레드가 동시에 접근해도 안전 -> 서로 다른 스레드 간에 공유 가능 엔티티 매니저 EntityManager em = emf.createEntityManager(); - 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 스레드 간에 절대 공유 금지 영속성 컨텍스트 엔티티를 영구 저장하는 환경 em.persist(e..
책에 나온 설정 방법 - 이클립스 - Java 1.6 - Maven - H2 1.4.187 변경 사항 - IntelliJ 인텔리제이 - Java 11 - Gradle - H2 2.1.214 build.gradle dependencies { implementation 'org.hibernate:hibernate-entitymanager:5.6.15.Final' implementation 'org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final' runtimeOnly 'com.h2database:h2:2.1.214' /* java 11일 경우 설치 */ implementation 'javax.xml.bind:jaxb-api:2.3.0' compi..
JDBC - JDBC를 사용하여 DB에 접근할 경우, JDBC API를 사용해서 SQL을 DB에 전달한다. 1. SQL을 직접 다룰 경우 생기는 문제점 - SQL을 직접 다룰 경우, CRUD용 SQL을 반복해서 작성해야하는 비생산적인 과정을 수행해야한다. - SQL에 의존적인 개발을 하게 된다. (테이블에 컬럼을 추가시 연관된 SQL을 모두 수정해야한다.) 2. 객체지향 DB의 패러다임 불일치 - 상속 : 객체는 상속 기능 O VS 테이블은 상속 기능 X - 연관관계 : 객체는 참조를 통해 연관 객체 조회 VS 테이블은 외래키와 조인을 사용해서 조회 - 객체 그래프 탐색 : SQL을 직접 다룰 경우, SQL에 따라 객체 그래프를 어디까지 탐색할 수 있는지 정해진다. - 비교 : 동일성(==) 비교시 같..
1. 정의 동적계획법 (DP) 입력 크기가 작은 부분 문제들을 해결한 후, 해당 부분 문제의 해를 활용해서, 보다 큰 크기의 부분 문제를 해결 상향식 접근법으로, 가장 최하위 해답을 구한 후, 이를 저장하고, 해당 결과값을 이용해서 상위 문제를 풀어가는 방식 Memoization 기법을 사용함 Memoization : 프로그램 실행 시 이전 계산 값을 저장하여 다시 계산하지 않도록 하여 전체 실행 속도를 빠르게 하는 기술 분할 정복 문제를 나눌 수 없을 때까지 나누어서 각각을 풀면서 다시 합병하여 문제의 답을 얻는 알고리즘 하향식 접근법으로, 상위의 해답을 구하기 위해, 아래로 내려가면서 하위의 해답을 구하는 방식 일반적으로 재귀함수로 구현한다. 문제를 잘게 쪼갤 때, 부분 문제는 서로 중복되지 않는다...
[Silver IV] 30 - 10610 문제 링크 성능 요약 메모리: 29736 KB, 시간: 600 ms 분류 그리디 알고리즘, 수학, 정수론, 정렬, 문자열 문제 설명 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라. 문제풀이 이 문제는 30의 배수를 만족하는 가장 큰 수를 만들..
[Gold IV] 카드 정렬하기 - 1715 문제 링크 성능 요약 메모리: 113076 KB, 시간: 1000 ms 분류 자료 구조, 그리디 알고리즘, 우선순위 큐 문제 설명 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다. 매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비교 횟수가 매우 달라진다. 예를 들어 10장, 20장, 40장의 묶음이 있다면 10장과 20장을 합친 뒤, 합친 30장 묶음과 40장을 합친다면 (10 + 2..