본문 바로가기

☕Java102

Querydsl 주요 내용 정리 Querydsl을 사용하면 컴파일 시점에 SQL 오류를 잡을 수 있음 Q클래스(타입)를 직접 생성(new)하거나 이미 생성돼 있는 객체를 사용하면 됨 cf) Q클래스는 메타모델 클래스라고도 함. 이는 Criteria API나 Querydsl에서 보편적으로 쓰이는 용어. 보통은 생성된 객체 사용하고, 같은 테이블을 조인해야 하는 경우에만 직접 작성 사용 방법(단건 조회) JPAQueryFactory queryFactory; // 직접 생성하거나 스프링을 통해 주입 queryFactory.select(Q타입).from(Q타입).where(Q타입.필드.eq(조건)).fetchOne(); queryFactory.selectFrom(Q타입).where(Q타입.필드.eq(조건)).fetchOne(); queryFa.. 2024. 3. 27.
스프링 엔티티 매핑 애너테이션 정리 타입 애너테이션 @Entity - JPA에서 엔티티로 관리할 클래스(엔티티명) @Table - 매핑 대상 테이블 관련 설정(테이블명, 카탈로그, 스키마, 유니크 키 제약 조건) @Acces - DB 접근 방식(AccessType.FIELD, AccessType.PROPERTY) 필드 접근은 필드에 직접 접근. private도 접근 가능. 프로퍼티 접근은 getter 이용하여 접근. 필드 애너테이션 @Id - 기본키 @GeneratedValue - 기본키 생성 전략(IDENTITY, SEQUENCE, TABLE) @Column - 칼럼 매핑. 칼럼명과 제약조건들 설정(칼럼명, length, nullable, unique, precision(전체 자릿수), scale(소수 자릿수), columnDefinit.. 2024. 3. 23.
스프링 시큐리티로 CSRF 방지 설정하기 CSRF 공격이란? CSRF(Cross Site Request Forgery) 공격은 사용자가 의도하지 않은 요청을 악용하여 악의적인 행위를 유도하는 기법이다. 웹 애플리케이션은 일반적으로 사용자를 인증하기 위해 세션 쿠키나 인증 토큰을 사용하는데, CSRF 공격자는 이 인증 정보를 이용하여 피해자인 것처럼 요청을 보낸다. 이를 통해 공격자는 피해자의 권한으로 악의적인 동작을 수행할 수 있다. 예를 들어, 피해자가 로그인한 상태에서 공격자가 조작한 링크를 클릭하면, 웹 애플리케이션은 피해자의 인증 정보를 사용하여 공격자가 조작한 요청을 수행한다. 이로써 공격자는 피해자의 계정으로 의도하지 않은 동작을 수행할 수 있게 된다. 스프링 시큐리티에서는 기본적으로 CSRF 방지를 활성화한다. HttpSecurit.. 2024. 3. 17.
객체를 불변으로 만들기 위한 방어적 복사 참조형 변수를 멤버 변수로 사용하는 자바 객체의 경우 변수 취급에 주의해야 한다. 왜냐하면, 참조형 변수가 불변이 아닐 경우 외부에서 변경 가능해지는 등 부수효과가 크기 때문이다. 여기서는 가변 컬렉션의 예를 들어 이야기해보려고 한다. 컬렉션을 반환하는 getter가 단순히 멤버 필드를 그대로 반환할 경우 해당 필드가 참조형 변수이기 때문에 외부에서 요소를 추가, 수정, 삭제할 수 있게 된다. 이는 필드를 private으로 선언하여 객체를 은닉화한 이유를 없애버린다. 뿐만 아니라, 객체 생성 시 멤버 필드로 외부 컬렉션을 받아 올 경우, 해당 컬렉션을 외부에서 수정하면 같은 이유로 내부 멤버 컬렉션이 수정될 수 있다. 이러한 문제를 해결하기 위해 나온 개념이 방어적 복사이다. 외부에서 컬렉션이 수정될 것.. 2023. 12. 15.
728x90