본문 바로가기

Backend Develop

(43)
[JPA] JPA와 ORM과의 관계 JPA란 자바 ORM 기술에 대한 API 표준 명세를 의미합니다. JPA는 ORM을 사용하기 위한 인터페이스를 모아둔 것이며, JPA를 사용하기 위해서는 JPA를 구현한 Hibernate, EclipseLink, DataNucleus 같은 ORM 프레임워크를 사용해야 합니다. 참고사이트 https://victorydntmd.tistory.com/195 [Spring JPA] ORM과 JPA 그리고 Hibernate 2020.03.06 수정 1. JPA ( Java Persistent API )와 ORM ( Object Relational Mapping ) JPA JPA란 자바 ORM 기술에 대한 API 표준 명세를 의미합니다. JPA는 ORM을 사용하기 위한 인터페이스를 모아둔 것이며, J.. victo..
[Spring] Log4j2를 Profile에 따라 다르게 사용하기 SpringBoot SpringBoot의 경우 소스코드를 직접 구현하거나 수정할 필요없이 간단한 설정으로 처리 가능하다 resources의 application-{Profile}.properties 파일을 추가하면 프로파일에 해당하는 설정정보를 가져온다. 가령, application-dev.properties 라는 파일이 있다면 현재 프로파일이 dev 인 경우 해당 파일을 읽는다. application-prd.properties 가 있다면 프로파일이 prd 인 경우 해당 파일을 읽는다. 그러면 프로파일에 맞는 속성파일에 log4j 설정파일 경로를 설정한다. logging.config=classpath:log4j2-dev.xml ServletContainerInitializer 서블릿 기반 웹이면 Serv..
[Spring] Request Mapping MediaType 설정 Mapping을 할때 우리는 받고싶은 데이터를 강제를 함으로써 오류상황을 줄일 수 있다. 이걸 위해 사용하는 것 중 하나가 Media Types이다. 들어오는 데이터와 나가는 데이터를 정하여 처리를 할 수 있다. consumes는 들어오는 데이터 타입을 정의할 때 사용하고 produces는 반환하는 데이터 타입을 정의할 때 사용한다. 예를 들어서 내가 json타입을 받고 싶다면 아래와 같이 처리가 가능하다. @PostMapping(path = "/pets", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) public void addPet(@RequestBody Pet pet) { // .....
[JPA] @OneToMany/@ManyToOne Join Annotation 사용법 연관 관계 매핑 테이블 간의 연관 관계가 있을 때, 객체지향스럽게 사용하는 방법을 제공한다. 기존의 데이터베이스에서는 외래 키를 사용하나 JPA에서는 객체를 참조하는 방식으로 연관 관계를 매핑 할 수 있다. 테이블 중심으로 모델링을 하게 되면, 외래 키를 가지고 데이터를 찾기 때문에 객체지향스럽지가 못하기 때문에, 객체 중심으로 관계를 매핑하고 모델링하는 것이 중요하다 본 포스팅에서 다루게 될 용어는 아래와 같다. 방향 : 단방향, 양방향 다중성 : 다대일, 일대다, 일대일, 다대다 연관관계의 주인 : 객체 양방향 연관관계는 관리 주인이 필요 일대다 [1:N] 일대다 관계에서는 일이 연관관계의 주인이다. 일 쪽에서 외래키를 관리하겠다는 의미가 된다. 결론을 먼저 말하자면, 표준스펙에서 지원은 하지만 실무..
[Gradle] 옵션 : buildscript, repository 그리고 dependencies 1. buildscript 그래들(Gradle)에서 buildscript는 보통 별도의 외부 라이브러리를 가져와야 할 때 사용합니다. 즉, 심플한(외부 라이브러리가 필요 없는) 라이브 사용 시에는 별도로 작성할 필요가 없습니다. buildscript는 repository와 dependencies로 구성됩니다. 2. repository 그래들(Gradle)에서 repository란 build.gradle이 들어있는 프로젝트에서 사용하는 라이브러리의 위치를 지정합니다. 가장 흔하게 사용하는 것은 jcenter(), mavenCentral(), google() 등이 있습니다. 모두 인터넷에 있는 공개용 라이브러리 저장소입니다. 3. dependencies repository에서 jcenter, mavenCen..
[Java] ConnectionTimeout과 ReadTimeout의 차이 @ 설명 ConnectionTimeout : 접속되기 전까지의 기다리는 시간 ReadTimeout : 접속되고 응답을 받기까지 기다리는 시간 참고사이트 inyl.github.io/programming/2017/12/02/timeout.html HttpURLConnectiondocs.oracle.com/javase/7/docs/api/java/net/URLConnection.html#setReadTimeout(int) docs.oracle.com/javase/7/docs/api/java/net/URLConnection.html#setConnectTimeout(int)
[Java] 추상클래스 vs 인터페이스 추상클래스와 인터페이스의 공통점과 차이점 공통점 추상클래스와 인터페이스는 선언만 있고 구현내용은 없는 클래스입니다. 추상클래스와 인터페이스로는 객체를 생성할 수 없습니다. 추상클래스를 상속받은 클래스와 인터페이스를 implements하고 구현한 클래스들만 객체 생성이 가능합니다. 차이점 추상클래스는 단일상속만되고 인터페이스는 다중구현이 가능합니다. 추상클래스는 상속을 강제해서 기능을 확장시키는 것을 목적으로 하고 인터페이스는 구현하는 모든 클래스에 대해 특정 메소드가 반드시 존재하도록 강제하는 것을 목적으로 합니다. 참고사이트 https://velog.io/@seungjoo/JAVAAbstract
[Java] HashMap 값으로 정렬하는 방법 소스코드 간단하게 바로 사용하는 방법 import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Iterator; public class ArraySort { public static void main(String[] args) { Map hashMap = new HashMap(); hashMap.put("A", 5); hashMap.put("B", 1); hashMap.put("C", 2); hashMap.put("D", 4); hashMap.put("E", 3); List listKeySet = new..