엔티티 매핑- 객체와 테이블 매핑 : @Entity, @Table- 필드와 컬럼 매핑 : @Column- 기본 키 매핑 : @Id- 연관관계 매핑 : @ManyToOne, @JoinColumn @Entity@Entity가 붙은 클래스는 JPA가 관리함JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수! ⭐️ 주의- 기본 생성자 필수 (파라미터가 없는 public 또는 protected 생성자)- final 클래스, enum, interface, inner 클래스 사용 X- 저장할 필드에 final 사용 X 📋 속성name- JPA에서 사용할 엔티티 이름 지정- 기본값 : 클래스 이름을 그대로 사용- 같은 클래스 이름이 없으면 가급적 기본값을 사용 @Table엔티티와 매핑할 테이블 지정 ⭐️ ..
전체 글

"엔티티를 영구 저장하는 환경" 🎈엔티티의 생명주기- 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 - 영속 (managed) 영속성 컨텍스트에 관리되는 상태 아직 DB에 저장된 것 아님 - 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 - 삭제 (removed) 삭제된 상태 // 객체를 생성한 상태 (비영속)Member member = new Member();member.setId("member1");member.setUsername("회원1");EntityManager em = emf.createEntityManager();em.getTransaction().begin();// 객체를 저장한 상태 (영속)em.persist(mem..
1. 1차 캐시와 동일성 보장같은 트랜잭션 안에서는 같은 엔티티를 반환 -> 약간의 조회 성능 향상한번 조회를 하면 두번째 조회부터는 캐시에서 조회, SQL 1번만 실행ex)String memberId = "100";Member m1 = jpa.find(Member.class, memberId); // SQL 조회Member m2 = jpa.find(Member.class, memberId); // 캐시 조회println(m1 == m2) // true 2. 트랜잭션을 지원하는 쓰기 지연(transactional write-behind)SELECT트랜잭션을 커밋할 때까지 INSERT SQL을 모음JDBC BATCH SQL 기능을 사용해서 한번에 SQL 전송 UPDATE트랜잭션 커밋 시 UPDATE,..
https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 A..
https://www.acmicpc.net/problem/2565 2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는 www.acmicpc.net 문제 두 전봇대 A와 B 사이에 하나 둘씩 전깃줄을 추가하다 보니 전깃줄이 서로 교차하는 경우가 발생하였다. 합선의 위험이 있어 이들 중 몇 개의 전깃줄을 없애 전깃줄이 교차하지 않도록 만들려고 한다. 예를 들어, 과 같이 전깃줄이 연결되어 있는 경우 A의 1번 위치와 B의 8번 위치를 잇는 전깃줄, A의 3번 위치와 B의 9번 위치를 잇는 전깃줄, A의 4번 위치와 B의 1번 위치를 잇는..
Lower Bound와 Upper Bound는 이진탐색을 기반으로 경계값을 찾는 알고리즘이다. 📕Lower Bound 찾고자 하는 값과 같거나 큰 값이 최초로 나타나는 위치. 즉, 특정 값의 시작 위치를 찾는 알고리즘. 이진탐색 시 mid 값이 target 값보다 작으면 left 값을 mid + 1로, mid 값이 target 값보다 크다면 right 값을 mid로 한다. 반복이 끝나면 right 값이 lower bound가 된다. int binarySearch(int left, int right, int target) { int mid; while (left < right) { mid = (left + right) / 2; if (lis[mid] < target) { left = mid + 1; } e..
Q. RDBMS와 Nosql의 차이점을 설명해 주세요. Database : 여러 사람에 의해 공유되어 사용될 목적으로 통합되어 관리하는 데이터의 집합 DBMS : DataBase Management System, 데이터베이스에 저장된 정보를 관리할 수 있도록 해주는 소프트웨어 SQL : Structured Query Language, 관계형 DBMS에 저장된 데이터를 관리하기 위해 설계된 프로그래밍 언어 📕 RDBMS (Relational DataBase Management System, 관계형 데이터베이스 관리 시스템) 특징 - 속성과 값을 이용하여 데이터를 정의하고 저장/관리함 - 테이블들은 서로 관계를 맺으며 존재 - 테이블 간의 관계를 나타내기 위해 외래 키 사용 - 외래 키를 이용한 테이블 간 ..

https://www.acmicpc.net/problem/17503 17503번: 맥주 축제 첫 번째 줄에 축제가 열리는 기간 N (1 ≤ N ≤ 200,000) 과, 채워야 하는 선호도의 합 M (1 ≤ M > m >> k; for(int i = 0; i > v >> c; pq.push({c, v}); } bool check = 0; int day = 0, prefer = 0, level = 0; while(!pq.empty()) { int ci = pq.top().first; int vi = pq.top().second; pq.pop(); likepq.push(vi); day++; prefer+= vi; if(level < ci) level = ci; if(day == ..