분류 전체보기

    [JPA]NamedQuery

    미리 정의해서 이름을 부여해두 사용하는 sql로 정적 쿼리에서만 사용 가능하다.어노테이션 , XMl에 정의하며, 애플리케이션 로딩 시점에 초기화 후 재사용 한다. 애플리케이션 로딩 시점에서 쿼리를 검증 @Entity @NamedQuery( name ="Member.findByUsername", query = "select m from Member m where m.username = :username" //blabla ) 사용은 아래와 같이 할 수 있다. List results = em.createNamedQuery("Member.findByUserName", Member.class) .setParameter("username", "회원1") .getResultList();

    [JPA] 엔티티 직접사용

    [JPQL] jpql에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용 SELECT count(m.id) from Member m //엔티티의 아이디를 사용 SELECT count(m) from Member m // 엔티티를 직접 사용 위 두문장은 똑같은 쿼리를 발생함 [sql] select count(m.id) as cnt from Member m 엔티티 직접 사용- 외래키값 1.SELECT m from Member m where m.team = : team 2.m.team.id 위 두문장은 똑같은 쿼리를 발생함(외래키) [sql] SELECT m.^ from member m where m.team_id=?

    [JPA] 값 타입종류

    엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 값 타입 int, integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고, 값만 있으므로 변경시 추적 불가 값타입의 분류 기본값 타입2.값을 공유하면 안됨 int, double 같은 기본 타입은 절대 공유 x Integer같은 래퍼 클래스나 String같은 특수 클래스는 공유 가능한 객체이지만 변경이 안됨 3.자바 기본 타입(int, double)5.String 4.래퍼 클래스(Integer, Long) 1.(생명주기를 엔티티의 의존 → 회원을 삭제하면 이름, 나이 필드 함께 삭제) 임베디드 타입(예를 들면 x,y값을 같이 묶어서 사용하고 싶을때) 새로운 값 타입을 직접 정의할 ..

    [JPA] Hibernate 초기화 전략

    Spring-data-JPA와 DBMS를 연결해서 사용할 때 간편히 개발환경의 변경사항을 적용하여 테스트 할 수 있다. DDL Generation Spring은 EntityScan을 통해 @Entity 에노테이션이 명시한 클래스를 찾는다. Spring.jpa.generate-ddl=true 옵션을 true로 설정하면 해당 데이터를 근거로 서버 시작 시점에 DDL문을 생성하여 DB에 적용한다. jpa.generate설정은 JPA 구현체 DDL 생성 옵션의 링크이고, true/false밖에 선택할 수 없다. Spring.jpa.hibernate.ddl-auto 옵션을 통해 보다 상세한 데이터 베이스 초기화 전략을 설정할 수 있음 none: 아무것도 실행하지 않음 create-drop : SessionFact..

    [스프링 핵심 원리-고급] ThreadLocal

    쓰레드 로컬은 해당 쓰레드만 접근할 수 있는 특별한 저장소를 말한다. (같은 인스턴스의 쓰레드 로컬 필드에 접근해도 문제가 없음) ThreadLocal을 활용한 예제 코드 작성 @Slf4j public class ThreadLocalService { private ThreadLocal nameStore = new ThreadLocal(); public String logic(String name) { log.info("저장 name={} -> nameStore={}", name, nameStore.get()); nameStore.set(name); sleep(1000); log.info("조회 nameStore={}", nameStore.get()); return nameStore.get(); } pri..

    [스프링 핵심 원리-고급]필드 동기화 -동시성 문제

    동시성 문제 * 스프링빈으로 등록된 클래스가 싱글톤이라면, 이 객체는 애플리케이션에 딱 하나만 존재한다는 뜻이다. 이렇게 하나만 있는 인스턴스의 필드를 여러 쓰레드가 동시에 접근하면서 발생하는 문제 환경 구축 test환경 lombok 설정 dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' //테스트에서 롬복사용 testCompileOn..

    [인프런]스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security

    [인프런]스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security

    스프링시큐리티 스프링 시큐리티 기본 API 및 Filter이해 Form Login 로그인 페이지를 이용한 인증 방식 관련 설정 종류 loginPage("/loginPage") : 내가 사용할 로그인 페이지, 만약 설정 안하면 스프링시큐리티 기본 로그인 페이지 이용 defaultSuccessUrl("/") : 로그인 성공 후에 이동할 경로, 스프링시큐리티는 기본적으로 로그인을 성공하게 되면 제일 먼저 로그인을 성공하기 직전에 거쳐왓던 url 정보를 기억하고 있다가, 성공하게 되면 그 URL로 리다이렉트함, SavedRequest, requestCache등에 이동할 경로가 없거나, 이외에도 우선순위에 따른 targetUrl을 계속 구하다가 아무값도 없을때 defaultSuccessUrl로 이동한다 failu..