본문 바로가기

분류 전체보기89

1. JPA 시작하기 1. hibernate.dialect JPA는 특정 데이터베이스에 종속되지 않는다. 각 데이터베이스의 SQL 문법과 함수는 조금씩 다르다. MySQL : VARCHAR Oracle : VARCHAR2 해당 설정을 통해서 JPA 가 어느 데이터베이스에 종속되지 않도록 설정할 수 있다. 현재 강의에서는 h2를 메인으로 사용하기 때문에 org.hibernate.dialect.H2Dialect 로 진행한다. 2. JPA 구동 방식 JPA 에는 Persistence 라는 클래스가 존재한다. META-INF/persistence.xml 을 읽어서 설정 정보를 조회한다. 읽은 정보를 기반으로 EntityManagerFactory를 생성한다. 이를 기반으로 EntityManager을 생성해서 사용한다. JPA 의 모든.. 2020. 12. 26.
2. 엔터티 설계시 주의점 1. 엔터티 설계에서는 가급적 Setter를 사용하지 않는다. 2. 모든 연관관계는 Lazy로 세팅한다. Eager로 많이엮여있으면 하나를 가져올 때 모두를 가져오는 문제가 생길 수 있다. Lazy + [fetch join/entity graph] 을 사용해라 특히 JPQL을 사용할 때 N+1 문제가 자주 발생한다. @XToOne(OneToOne, ManyToOne) 은 기본 전략이 Eager이므로 꼭 Lazy로 설정해야한다. 3. 컬렉션은 필드에서 초기화해라 4. 하이버네이트 테이블, 컬럼명 생성 전략 (SpringPhysicalNamingStrategy) camelCase -> underscore 점(dot) -> underscore 대문자 -> 소문자 5. Cascade 2020. 12. 26.
1. 환경설정 1. JPA 환경설정 spring.jpa.hibernate.ddl-auto create : 어플리케이션 실행 시점에 내가 가지고 있는 엔터티를 지우고 재생성한다. spring.jpa..properties.hibernate show_sql : System.out.println 형식으로 쿼리문을 출력해준다. 2020. 12. 25.
7. 빈 스코프 1. 빈 스코프란 스코프 : 빈이 존재할 수 있는 범위를 뜻한다. 싱글톤 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 빈 요청을 하면, 빈 생성, 의존관계 주입, 초기화 메소드까지 호출하고 빈을 제공한다. 종료메소드는 호출되지 않는다. 프로토타입 빈의 주입까지만 관여하고 더는 관리하지 않는 짤은 범위의 스코프다. @Scope("prototype") 웹 관련 스코프 request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다. session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프이다. application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다. 2. 프로토타입 스코프 싱글톤은 항상 같은 인스턴스의 빈을 반환 프로토타입은 항상 새.. 2020. 12. 24.