💻dev

필드 - 컬럼 매핑 아래와 같은 요구사항이 주어진다고 가정해보자. 1. 회원은 일반회원/관리자로 구분 2. 회원 가입일과 수정일이 존재 3. 회원을 설명하는 필드가 있고 이 필드는 길이 제한이 없음 예제) package hellojpa; import javax.persistence.*; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; @Entity public class Member { @Id private Long id; @Column(name = "name") private String username; private Integer age; @Enumerated(EnumType.STRING) priva..
@Entity @Entity가 붙은 클래스는 JPA가 관리, 엔티티라고 한다. JPA를 사용해서 테이블과 매핑할 클래스라면 @Entity 필수! 주의사항 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스 사용 X 저장할 필드에 final 사용 X @Entity의 속성: name @Entity public class Member { ... } JPA에서 사용할 엔티티 이름을 지정한다. 기본값: 클래스 이름을 그대로 사용(예: Member) 같은 클래스 이름이 없으면 가급적 기본값을 사용한다. @Table @Table은 엔티티와 매핑할 테이블 지정 @Entity @Table(name="MEMBER") public..
간단히 말해서 플러시란? 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 것 플러시 발생 - 변경 감지(Dirty Checking) - 수정된 엔티티 쓰기 지연 SQL 저장소에 등록 - 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시하는 방법 1. em.flush() : 직접 호출 2. 트랜잭션 커밋 : 플러시 자동 호출 됨 3. SQL 쿼리 실행 : 플러시 자동 호출 됨 혹시 플러시를 하게 되면 1차 캐시가 다 지워지나요? 아닙니다. 1차 캐시는 다 유지가 됨! 오직 영속성 컨텍스트에 있는 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송함! 혹은 변경 감지에 의해 변경된 내용만 반영되는 과정이다. JPQL 쿼리 실행시 플러시가 자동으..
들어가기 전에 참고 자료 - JPA 구동 방식 영속성 컨텍스트 "엔티티를 영구 저장하는 환경" 이라는 뜻이다. 논리적인 개념이므로 눈에 보이지는 않는다. 일종의 공간이라고 생각하면 된다. 엔티티를 엔티티 매니저를 통해서 영속성 컨텍스트에 접근한다. EntityManager.persist(entity); 엔티티의 생명주기 - 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 //객체를 생성한 상태(비영속) Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); - 영속(managed) : 영속성 컨텍스트에 관리되는 상태 //객체를 생성한 상태(비영속) Member member = ..
JPA Java Persistence API, 자바 진영의 ORM(Object Relational Mapping, 객체 관계 매핑) 기술 표준. JPA는 자바 표준 명세, 즉 인터페이스의 모음이다. 애플리케이션과 JDBC 사이에서 동작한다. JPA 구동 방식 JPA 동작 - 저장, 조회 JPA를 왜 사용해야 하는가? 생산성 - JPA와 CRUD(트랜잭션 안에서) 저장: jpa.persist(member) 조회: Member member = jpa.find(memberId) 수정: member.setName("변경할 이름") 삭제: jpa.remove(member) 유지보수 - 기존: 필드 변경시 모든 SQL 수정 - JPA: 필드만 추가하면 된다 패러다임의 불일치 해결 1. JPA와 상속 //저장시 개발..
문제설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 participant completion return ["leo", "kiki..
cron? GitHub Actions에서 cron은 특정 일정에 따라 작업을 자동으로 실행하는 데 사용됩니다. 이 기능은 코드의 자동화와 지속적인 통합을 용이하게 하며, 지속적인 배포와 테스트에 매우 유용합니다. 이 글에서는 GitHub Actions에서 cron을 설정하는 방법을 자세히 알아보겠습니다. cron 설정하기 GitHub Actions에서 cron을 설정하는 것은 매우 간단합니다. 먼저, 워크플로우 파일의 on 항목 아래에 schedule 속성을 추가합니다. 이 속성은 cron 작업을 설정하는 데 사용됩니다. 예를 들어, 매일 오전 9시에 작업을 실행하려면 다음과 같이 작성할 수 있습니다. on: schedule: - cron: '0 9 * * *' 위 코드에서 cron 항목은 cron 표현..
문제 설명 문제 설명 주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 아래는 하나의 예시를 나타냅니다. 요금표 기본 시간(분) 기본 요금(원) 단위 시간(분) 단위 요금(원) 180 5000 10 600 입/출차 기록 시각(시:분) 차량 번호 내역 05:34 5961 입차 06:00 0000 입차 06:34 0000 출차 07:59 5961 출차 07:59 0148 입차 18:59 0000 입차 19:09 0148 출차 22:59 5961 입차 23:00 5961 출차 자동차별 주차 요금 차량 번호 누적 주차 시간(분) 주차 요금(원) 0000 34 + 300 = 334 5000 + ⌈(334 - 180) / 10⌉ x 600 = 146..
쁜새
'💻dev' 카테고리의 글 목록 (13 Page)