728x90 DataBase/JPA40 [JPA] AttributeConverter AttributeConverter 사용이유 Enum 값을 DB 에 저장할 경우 다음과 같은 상황이 생길 수 있다. - Enum 값이 길때 간단한 코드로 값을 만들어 저장 하는 것이다. - Enum 값을 코드로 저장할 경우 컬럼이 많을 경우 문제가 생길수 있다. 백엔드 개발을 할때 java 와 DB 사이에 값을 변환할때 필요하다. - 아래와 같이 저장하고 불러 올때 사용한다. Java Enum DB 년 Year y 월 Month m 일 Day d AttributeConverter Enum 값을 Code 로 저장할수 있게 해주는 Interface 이다. 그렇다 Interface 이면 직접 구현을 해줘야한다. AttributeConverter interface 구조 public interface Attrib.. 2022. 4. 2. [JPA] JPA의 설정 옵션들 JPA 의 옵션들을 살펴보자 JPA 옵션들은 운영과 개발하는데 있어 상당히 중요하다. 그렇기 때문에 어떤 옵션들이 있는지 알고 가는것이 중요하다. yaml 파일 기준으로 작성한다. 1. 데이터 베이스 스키마 자동생성 옵션 yaml 파일에 다음과 같이 옵션 지정 spring: jpa: hibernate: ddl-auto: 옵션지정 Create 기존 @Entity 가 붙어있는 테이블들을 Drop 한뒤 다시 생성한다. 운영 DB에 사용하면 망한다. 1. Hibernate: // drop drop table table_name if exists 2. Hibernate: // create create table table_name ( ..., ..., ... ) Create-Drop create 와 동일하나 어플.. 2022. 1. 26. [JPA] JPQL Named 쿼리 Named 쿼리 엔티티에 어노테이션으로 쿼리를 등록하여 단축어로 쓸수 있다. 미리 정의 한 후 이름을 부여해두고 사용한다. 정적쿼리이다. 어노테이션, XML 에 정의 할수 있다. - XML 이 우선순위가 더 높다. 장점 어플리케이션 로딩 시점에 초기화 후 재사용 - 로딩시 파싱하여 캐싱하고 있다. 애플리케이션 로딩 시점에 쿼리를 검증 - 실행하는 시점에 쿼리에 에러가 있으면 에러를 발생시킨다. 예제 member class @Entity @NamedQuery( name = "Member.findByUsername", query = "select m from Member m where m.username = :username_ public class Member { ... } 사용부분 List resultL.. 2021. 9. 28. [JPA] JPQL 엔티티 직접 사용 JPQL 엔티티 직접 사용 엔티티를 JPQL 에서 직접 사용하면 어떻게 될까? 엔티티 기본 키값을 사용한다. 예제1 JQPL 다음 두개는 동일한 결과를 가져온다. select count(m.id) from Member m select count(m) from Member m SQL 실제 수행되는 쿼리는 동일하다. select count(m.id) as cnt from Member m 예제2 엔티티를 파라미터로 전달 String jpql = "select m from Member m where m = :member"; List resultList = em.createQuery(jpql) .setParameter("member" member) .getResultList(); 식별자를 직접 전달 String .. 2021. 9. 28. 이전 1 2 3 4 ··· 10 다음 728x90 반응형