자바/JPA
-
[JPA] test 시 @RequiredArgsConstructor 사용 불가자바/JPA 2024. 1. 21. 22:25
| 문제점 평소 lombok의 Annotation인 @RequiredArgsConstructor를 통해 @Autowired로 의존성을 주입하지 않고 private final로 생성자 의존성 주입을 해왔습니다. 이는 Spring 컨테이너를 통해 의존성을 주입시켜주는 방식으로 사용이 가능했으나, Spring에서 Test를 진행할 경우에는 Spring 컨테이너를 사용하지 않고 JUnit 프레임워크를 사용해 lombok이 동작하지 않습니다. @SpringBootTest @RequiredArgsConstructor class VideoTest { private final VideoRepository videoRepository; private final VideoPostService videoPostService..
-
[JPA] jakarta.persistence @Annotation 정리자바/JPA 2024. 1. 18. 15:29
JPA의 영속성 관련해 자주 사용하는 @Annotaion을 한 자리에 정리해 보았습니다. @Entity: 해당 객체를 JPA에서 엔티티로 인식 할 수 있도록 해주는 Annotaion @Id: 엔티티의 PK 임을 나타내며 Id로 설정된 객체 이름을 snake_case로 변환해 DB의 테이블과 맵핑해줍니다. @GeneratedValue: Id로 설정된 식별자 값을 자동으로 증가시켜 주며, 아래와 같은 네 가지 타입이 존재합니다. GeneratedValue(strategy = GenerationType.IDENTITY) PK 값 생성을 DB에 맡깁니다. MySQL, MSSQL 등에 주로 사용됩니다. GeneratedValue(strategy = GenerationType.SEQUENCE) DB에서 테이블의 행..
-
[JPA] Lombok 이란?자바/JPA 2024. 1. 6. 20:59
| Lombok Java 라이브러리로 Lombok의 Annotation을 사용해 자주 사용하는 메서드 및 Annotation을 자동으로 등록해주거나, 자료에 대한 검증을 해주어 가독성과 편의성을 높여줍니다. 멤버 변수 별 getter, setter 등을 자동으로 생성해 깨끗한 화면과 메서드를 반복 생성하는 비용을 줄여줍니다. | 주요 Annotation @Getter : 멤버 변수들의 getter 메서드 자동 생성 @Setter : 멤버 변수들의 setter 메서드 자동 생성 @ToString : 멤버 변수 print 출력 시, 주소 값이 아닌 String 문자열을 출력해 주는 메서드 자동 생성 @EqualsAndHashCode : Equals(동등성)와 hashCode(동일성) 두 가지 연산자를 모두 ..
-
[JPA] Persistence(영속성) 정리자바/JPA 2024. 1. 2. 17:45
| Persistence(영속성)란? 이전 글에서 JPA는 프레임워크이며 인터페이스라고 설명드린 내용이 기억나실까요? 이러한 JPA를 구현체(본 블로그에서는 Hibernate를 사용)를 통해 구현하며, 구현하는 객체 중 하나가 Persistence입니다. Persistence는 데이터를 영속성 상태인 데이터와 그렇지 않은 상태로 구분하며, 영속성 상태인 데이터는 별도 관리해 빠른 조회 및 변화를 감지해 데이터 베이스에 업데이트를 진행할 수 있게 해줍니다. 즉, 데이터 베이스와 연결시켜주는 JPA 객체라고 이해하시면 되겠습니다. 영속성 상태에 대해서는 다른 용어들의 설명 이후에 말씀드리도록 하겠습니다. | Persistence 설정 Persistence를 사용하기 전에 어느 데이터 베이스와 연결할지, 사용..
-
[JPA] JPA란?자바/JPA 2023. 12. 18. 21:41
| JPA란? JPA는 Java Persistence API의 약자로 Java에서 객체를 영구적으로 관리(DB에 관리)하는 것을 의미하며, Java ORM(Object Relational Mapping)을 통해 Java와 관계형 DB를 연결하는 프레임워크입니다. 비슷한 역할을 하는 프레임워크로 Mybatis가 있습니다. | JPA를 사용하는 이유 부제로는 국내 점유율이 높은 Mybatis 대신 JPA를 쓰는 이유가 적절할 것 같습니다. 우선 국외 시장을 기준으로 보았을 때 Mybatis보다 JPA가 앞도적인 점유율을 가지고 있습니다. 또한 Java에서 공식적으로 안내하는 ORM API가 JPA다. 마지막으로 INSERT, SELECT, UPDATE 등 대부분의 쿼리가 SQL별로 맞추어 Mapper를 작성..
-
[JPA] console에 query parameter 값 표시 with.springboot자바/JPA 2023. 11. 29. 11:18
JPA를 사용할 때, sql 구문에 파라미터 값들이 console에서 아래 캡처와 같이 ?로 표시됩니다. 이러한 경우 값이 유도한대로 들어갔는지 보기 위해 DB를 확인하는 등 불편함이 있었습니다. 이럴 때 dependencies에(gradle 기준) 한 줄을 implementation 해주어 외부라이브러리를 불러오면 아래 캡처와 같이 어떤 파라미터 값이 들어갔는지 볼 수 있습니다. implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' 버전은 사용하시는 springboot의 버전에 따라 작성하시기를 바랍니다.
-
[JPA] window / mac cmd에서 jar파일 빌드해서 실행하기 with. gradlew자바/JPA 2023. 11. 29. 10:35
IntelliJ나 STS를 통해 surver를 구동하는 것이 아닌 cmd에서 gradle과 jar를 build해 서버를 구동하는 법을 알아보겠습니다. cmd open 'gradlew build'(Window) / '.gradlew build'(Mac) cd build/libs java -jar hello-spring-0.0.1-SNAPSHOT.jar url 주소에 localhost:8080 입력 후 동작 확인 Java version 오류가 발생할 경우 'java -version'으로 현재 설치 및 설정된 java의 버전을 확인한 후 업그레이드 및 다운드레이드 필요합니다.