Java
-
Spring Data JpaJava 2025. 8. 1. 23:40
jpa는 jpql을 사용해 쿼리를 짠다.그러나 이것도 귀찮아진 개발자들은 더욱 쉬운 방법을 찾게 되는데... 이것이 스프링 데이터 jpa이다!jpql을 사용하지 않고 메소드 이름만 잘 정의하면 스프링이 알아서 잘 jsql을 짜준다.정의 public interface MemberRepository2 extends JpaRepository {} JpaRepository를 상속하여 인터페이스를 만든다. @Repository 어노테이션 생략 가능하다. 공통 인터페이스JpaRepository를 상속하면 공통 인터페이스를 스프링이 구현해준다. 공통 인터페이스는 save(), delete(), existsById(), findAll(), findById(), count(), existsById()등등이 있다.쿼리 메..
-
spring QuerydslJava 2025. 5. 22. 19:18
1. 설정1.1. build.gradle설정은 스프링 버전에 따라 다르다. 이 글에서는 3.4.5버전에서의 설정이다.dependencies { // QueryDsl implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:5.1.0:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api"}build.gradle에 위 설정을 추가한다. com.querydsl의 두가지를 추가하면 되는데, ja..
-
JPA (Java Persistence API)Java 2025. 5. 15. 01:12
jpa는 java의 orm(object relational mapping)기술이다.application.properties 설정데이터베이스 스키마 자동생성 spring.jpa.hibernate.ddl-auto= create : 기존 테이블 삭제 후 다시 생성 create-drop : create와 같으나 종료 시점에 테이블 drop update : 변경분만 반영(운영db에는 사용x) validate : 엔티티와 테이블이 정상 매핑되었는지만 확인 none : 사용하지 않음 개발 초기: create 또는 update 테스트 서버: update 또는 validate 스테이징과 운영 서버: validate 또는 none #h2 데이터베이스spring.datasource.driver-class-name=org.h..
-
Optional<T>Java 2025. 5. 10. 21:29
optional은 java 8에 추가된 문법으로, null값일 수 있는 변수를 감싸주는 클래스이다.java 프로그래밍을 하다보면 NullPointerException이 굉장히 많이 발생하는데 해당 예외를 잘 처리하기 위해 만들어졌다고 한다. 반환메소드설명static Optionalof(T value)null값이 아닌 값을 Optional로 감싸 반환static OptionalofNullable(T value)null일 수 있는 값을 Optional로 감싸 반환static Optionalempty()빈 Optional을 반환booleanisEmpty()값이 없다면 true, 있다면 falsebooleanisPresent()값이 있으면 true, 없다면 falsevoidifPresent(Consumer..
-
spring 예외(Exception) 처리Java 2025. 4. 17. 18:05
사용자가 필수 파라미터를 빼고 요청을 보냄. 서버 내에서 데이터베이스 조회 오류. 그 외 예상치 못한 오류. 등등 예외가 발생하면 어떻게 처리해야 하는가? 기본적으로 스프링이 적절한 예외 페이지를 보여준다. 그러나 좀 더 자세하게 오류 정보를 전달하고시다면 따로 설정해주어야 한다.예외가 발생하였을 때, 표현 방법에 따라 2가지로 나눌 수 있다. 웹에서 요청한 경우와 api를 요청한 경우이다. 각각 html, json으로 오류 정보를 응답한다.1. html로 오류 표시 (웹 클라이언트 요청)스프링에서는 resources/templates/error또는 resources/static/error디렉토리에 에러코드.html을 만들면 된다. resources/templates/error/500.html r..
-
spring 검증(validation, bean validation)Java 2025. 4. 11. 02:10
웹 서비스를 만들다보면 회원가입, 로그인, 회원정보수정, 상품등록, 상품수정 등 많은 폼 입력을 만든다. 이때, 각 input에 대한 검증을 해야한다. 이 검증을 spring에서 쉽게 할 수 있게 도와준다.예를 들어, 그래픽카드를 등록하고 수정하는 기능이 있는 웹을 만들 것이다. 등록과 수정의 요구사항이 다르다고 가정한다.그래픽카드 도메인은 다음과 같다.@Getter @Setterpublic class GraphicsCard { private Long id; private GraphicsCardGroup group; private String name; private Long quantity; private Long price;}id는 Repository가 자동으로 1부터 지정..
-
spring 로그인 세션과 인터셉터Java 2025. 4. 3. 23:19
웹 기능에 로그인은 매우 자주 사용되는 기능이다. spring에서는 이 로그인 기능을 세션을 사용해 어떤 멤버가 로그인하였는지, 인터셉터를 사용하여 로그인 안된(세션이 없는) 사용자는 서비스를 거부할 수 있다. 1. 세션세션 생성은 HttpSession session을 사용하면 되고, 세션 조회는 @SessionAttribute(name="attributeName", required = false)을 사용하면 된다. application.properties에 다음 내용을 추가해 세션을 조정할 수 있다.# 세션 움직임 없을때 타임아웃 시간. 기본 30분이다.server.servlet.session.timeout=60m# 세션을 쿠키로만 받는다. 아니면 url로 전송될 때도 있다.server.servlet..
-
spring 테스트 코드 작성Java 2025. 3. 11. 23:32
에러나 버그나 났을 때, 팀 프로젝트에서 내가 작성한 기능이 오류가 있는 것인지 동료의 코드가 오류가 있는 것인지프로젝트가 커지면서 기능이 이것저것 엮여있는 경우 버그가 나면 어느 기능이 오류가 나는지 알기 위해서는 테스트 코드를 잘 작성 해놓아야 한다. 테스트는 해당 기능의 패키지에서 main과 test만 바뀐 같은 위치에서 테스트한다. 해당 클래스이름 + Test로 클래스 이름을 만드는 것이 국룰이다. intellij 에서 Ctrl + Shift + T 단축키로 테스트 클래스를 만들 수 있다. 메소드에 @Test를 붙여 테스트를 한다.메소드에 @BeforeEach를 붙이면 테스트 실행전 실행되는 메소드가 된다.메소드에 @AfterEach를 붙이면 테스트실행후 실행되는 메소드가 된다.클래스에 @Spr..