Spring, Java 개발자 입니다

개발 공부

URI vs URL vs URN 비교 분석

URI : Uniform Resource Identifier URI로 식별할 수 있는 모든 것(제한 없음) URL : Uniform Resource Locator 리소스가 있는 위치를 지정 [프로토콜(https) + 호스트명(www.google.com) + 포트 번호(생략가능) + 경로 + 쿼리 파라미터] 와 같은 구성 URN : Uniform Resource Name 리소스에 이름을 부여

JAVA/자료구조

JAVA compareTo 메소드 사용법

compareTo 함수는 두 가지의 값을 비교할 때 사용하는 함수로 숫자와 문자열 모두를 비교할 수 있다. 반환 타입 : int 1. 숫자 비교 숫자 비교의 경우 기준값 s 비굣값 a, b, c 라고 했을 때 기준값이 크면 1, 같으면 0, 작으면 -1을 반환하게 된다. Integer s = 10; Integer a = 8; Integer b = 10; Integer c = 12; int result; result = s.compareTo(a); // result : 1 result = s.compareTo(a); // result : 0 result = s.compareTo(a); // result : -1 // int 타입을 사용할 경우 int A = 8; int B = 3; result = Inte..

JAVA/자료구조

JAVA Priority Queue 우선순위 큐 사용법과 정렬 기준 정의

기본적으로 Integer 값 혹은 String 같은 타입을 담는 우선순위 큐는 아래와 같은 방식으로 사용하면 된다. import java.util.*; // Priority_Queue 오름차순 정의 PriorityQueue priorityQueueAsc = new PriorityQueue(); // Priority_Queue 내림차순 정의 PriorityQueue priorityQueueDes = new PriorityQueue(Collections.reverseOrder()); // 삽입 priorityQueueAsc.add("java"); priorityQueueAsc.add("c++"); priorityQueueAsc.add("python"); String str =""; // 첫번째 값 반환 (첫..

JAVA/자료구조

JAVA 여러가지 자료구조 SORT 방법

Array 배열을 제외한 다른 자료구조는 Collections.sort() 함수를 사용해 정렬하지만 배열을 정렬하는 방법은 Arrays.sort() 함수를 이용해서 처리한다. (두 함수 모두 java.util 라이브러리 사용) Integer[] arr = new Integer[10]; //오른차순 정렬 Arrays.sort(arr); //내림차순 정렬 Arrays.sort(arr, Collections.reverseOrder()); List (ArrayList) + DoubleList(ArrayList) 단일리스트 정렬 List list = new ArrayList(); Collections.sort(list); //오름차순 정렬 Collections.sort(list, Collections.revers..

JAVA/자료구조

JAVA 필수 자료구조 ③, HashSet 이용하기

//라이브러리 추가 import java.util.Set; import java.util.HashSet; import java.util.Iterator; //1 : 맵 생성 Set set = new HashSet(); //2 : 데이터 추가 set.add("java"); set.add("python"); set.add("c++"); //3 : 데이터 조회 → 인덱스를 통해서 데이터를 조회할 수 없다. //iterator 를 통해서 접근해야 하거나 향상된 for 문을 통해서 접근한다. //3-1 : 향상된 for 문을 통해서 쉽게 접근할 수 있다. for(String str : set){ System.out.println("str : "+ str); } //3-2 : Iterator 를 통해서 값을 가져올..

JAVA/자료구조

JAVA 필수 자료구조 ②, HashMap 이용하기

//라이브러리 추가 import java.util.Map; import java.util.HashMap; import java.util.Iterator; import java.util.Set; //1 : 맵 생성 Map map = new HashMap(); //2 : 데이터 추가 map.put("Apple",5); map.put("Banana",3); map.put("Kiwi", 7); //2-1 : 데이터 수정 map.put("Banana", 4); //3 : 데이터 조회 → 인덱스를 통해서 데이터를 조회할 수 없다. //iterator 를 통해서 접근해야 하거나 향상된 for 문을 통해서 접근한다. //3-1 : 향상된 for 문을 통해서 쉽게 접근할 수 있다. for(String key : map...

JAVA/자료구조

JAVA 필수 자료구조 ①, ArrayList 이용하기

java.util.List 는 인터페이스 클래스로 java.uil.Collection 인터페이스를 구현한 것이다. java.util.ArrayList는 추상 클래스 AbstractList를 상속받고 인터페이스 List 를 상속받는다. 아래와 같은 함수들만 숙지한다면 알고리즘 문제에서는 해결 가능하다. //라이브러리 추가 import java.util.List; import java.util.ArrayList; //1 : 리스트 생성 List list = new ArrayList(); //2 : 데이터 추가 list.add("hello_world"); list.add("crazy_java"); //3 : 데이터 조회 → 인덱스를 통해서 데이터를 조회할 수 있다. //따라서 기본 for 문을, 향상된 for..

JPA/영속성 컨텍스트

OSIV와 성능 최적화

Open Session In View: 하이버네이트Open EntityManager In View: JPA→ 관례상 둘다 OSIV 라고 한다. spring.jpa.open-in-view: true  (기본 default 값)  OSIV 전략은 트랜잭션 시작처럼 최초 데이터베이스 커넥션 시작 시점부터 API응답이 끝날 때 까지 영속성 컨텍스트와 데이터베이스 커넥션을 유지한다. 그래서 View Template 혹은 API컨트롤러에서 지연 로딩이 가능하다. 지연 로딩은 영속성 컨텍스트가 살아있어야 가능하고, 영속성 컨텍스트는 기본적으로 데이터베이스 커넥션을 유지한다. 주의할점은 OSIV 전략이 너무 오랜시간동안 데이터베이스 커넥션 리소스를 사용하기 때문에, 실시간 트래픽이 중요한 애플리케이션에서는 커텍션이 모..

JPA/Fetch join

JPQL 페치 조인 (fetch join) - ②

페치 조인의 특징과 한계 페치 조인 대상에는 별칭을 줄 수 없다. 하이버네이트는 가능하지만 가급적 사용하지 않는다. 둘 이상의 컬렉션은 페치 조인 할 수 없다. 컬렉션을 페치 조인하면 페이징 API를 사용 할 수 없다. .setFirstResult(), .setMaxResults() 사용 불 가능 이러한 한계에도 불구 하고 연관된 엔티티들을 SQL 한 번으로 모두 가져올 수 있기 때문에 좋은 성능을 내기 위해서 사용하고 있다. 따라서 성능 최적화가 필요한 곳은 페치 조인을 적용한다. fetch join 정리 모든 것을 페치 조인으로 처리할 수 는 없다. 페치 조인은 객체 그래프를 유지할 때 사용하면 효과적이다. 여러 테이블을 조인해서 엔티티가 가진 모양이 아닌 전혀 다른 결과를 내야 한다면, 페치 조인보..

JPA/Fetch join

JPQL 페치 조인 (fetch join) - ①

JPQL fetch join SQL 조인 종류가 아니다. JPQL에서 성능 최적화를 위해 제공하는 기능으로 연관된 엔티티나 컬렉션을 SQL 한 번에 함께 조회하는 기능이다. join fetch 명령어를 사용한다. ex) 회원을 조회하면서 연관된 팀도 같이 조회하고 싶다. JPQL 쿼리 → select m from Member m join fetch m.team 실제 동작하는 SQL 쿼리 → SELECT M.*, T.* FROM MEMBER M INNER JOIN TEAM T ON M.TEAM_ID=T.ID 컬렉션 페치 조인 일대다 관계, 컬렉션 페치 조인 JPQL 쿼리 → select t from Team t join fetch t.members where t.name = ‘팀A' 실제 동작하는 SQL ..

수달하나
'분류 전체보기' 카테고리의 글 목록 (8 Page)