일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링 이메일 전송
- 넘파이
- 페이징 정렬
- swap 메모리
- springboot
- 값 타입
- github 복제
- 자바
- JPQL
- JDBC
- JPA
- 비밀번호 재설정 API
- 저장소 이전
- 두수의 합 자바
- 파이썬
- Git
- 우분투
- 저장소 복제
- 프로그래머스
- MVC
- MySQL
- api 개발
- Servlet
- 서버 배포
- Chat GPT
- HttpServletResponse
- Json 객체
- jar빌드
- git 충돌 해결
- 스프링부트 OpenAI API
- Today
- Total
목록JPA (12)
현의 개발 블로그

프로젝션 프로젝션은 SELECT 절에 조회할 대상을 지정하는 것이다. 프로젝션 대상 엔티티 프로젝션 List result = em.createQuery("select m from Member m", Member.class) .getResultList(); //영속성 컨텍스트에서 관리됨 Member findMember = result.get(0); findMember.setAge(20); 임베디드 타입 프로젝션 em.createQuery("select o.address from Order o",Address.class) .getResultList(); 스칼라 타입 프로젝션 스칼라 타입은 숫자, 문자 등 기본 데이터 타입을 의미한다. DISTINCT로 중복을 제거할 수 있다. em.createQuery("s..
스프링부트에서 Open AI를 활용해 응답을 받아오는 API를 구현할 것이다. build.gradle 설정 아래 라이브러리를 import 해준다. GitHub - TheoKanning/openai-java: OpenAI Api Client in Java OpenAI Api Client in Java. Contribute to TheoKanning/openai-java development by creating an account on GitHub. github.com implementation 'com.theokanning.openai-gpt3-java:service:0.14.0' DTO 생성 GPT에 요청을 할 DTO를 생성한다. @Getter @RequiredArgsConstructor public ..

특정 날짜 범위에 startDate 혹은 endDate가 포함될 경우 서평을 반환하는 API를 설계할 것이다. JPQL 작성 JPARepository를 상속받는 ReviewRepository에 jpql문을 입력한다. 특정 날짜 범위 시작일자, 종료 일자를 파라미터로 세팅한다. 특정 유저의 서평만 반환해야 하므로 User도 파라미터로 필요하다. 파라미터 설정 시, 쿼리 안에는 :key로 넣어주고, 함수 안에 @Param("key")로 매핑한다. 줄바꿈을 할 때는 +로 이어주고, 그 다음 줄에 한 칸 띄어야 한다. DTO 설정 요청 데이터 public class ReviewReq{ @Getter public static class Calendar{ @NotNull(message = "캘린더 시작 날짜를 입력..

값 타입 컬렉션 값 타입을 컬렉션에 담아서 쓰는 것을 말한다. 값 타입 컬렉션은 값을 하나 이상 저장할 때 사용한다. 데이터베이스는 컬렉션을 같은 테이블에 저장할 수 없다. 컬렉션을 저장하기 위한 별도의 테이블이 필요하다. 컬렉션은 1:N 개념이기 때문에, DB는 컬렉션을 하나의 테이블에 저장할 수 없기 때문이다. 별도의 식별자 아이디를 넣어 pk로 만들면, 해당 객체는 값 타입이 아니라 엔티티가 된다. 따라서 기존 컬럼들을 묶어 pk로 구성해야 한다. 컬렉션 하위 인터페이스 Set과 List를 컬렉션으로 사용할 수 있다. @Embedded private Address homeAddress; @ElementCollection @CollectionTable(name = "FAVORITE_FOOD", joi..

값 타입 비교 값 타입은 인스턴스가 달라도 그 안에 값이 같으면 같은 것으로 봐야 한다. 그런데 객체의 경우에는 == 비교 시 false가 반환된다. 객체 a와 b는 각각 다른 참조값을 갖고 있기 때문이다. int a = 10; int b = 10; System.out.println(a==b); //true Address a = new Address("city", "street", "zipcode"); Address b = new Address("city", "street", "zipcode"); System.out.println(address1 == address2); //false 값 타입의 비교는 동일성 비교와 동등성 비교가 있다. 동일성 비교는 인스턴스의 참조 값을 비교하는 것으로 ==을 사용한다..

값 타입 공유 참조 임베디드 타입은 여러 엔티티에서 공유하면 부작용이 발생할 수 있다. 두 Member 객체가 같은 Address 임베디드 타입을 공유한다고 해보자. Address address = new Address("city", "street", "10000"); Member member1 = new Member(); member.setUsername("member1"); member.setHomeAddress(address); em.persist(member); Member member2 = new Member(); member.setUsername("member2"); member.setHomeAddress(address); em.persist(member); 첫 번째 멤버의 주소를 newCit..