백엔드
-
jar 파일 실행 원리백엔드 2023. 2. 3. 11:05
java -jar로 커맨드 실행 MANIFEST.MF(개발영역단과 스프링부트 연결해주는 영역)의 main class인 jarLauncher가 실행 jarLauncher가 MANIFEST.MF start class인 JarAnalysisApplication 호출 ⇒ 이것의 핵심은 우리가 개발한 main 메소드를 스프링 프레임워크가 대신 호출해준다는 것 여기서 더 알 수 있는 것은 프레임워크와 라이브러리의 차이점 프레임워크 = 우리가 짠 코드를 호출, 흐름 통제권을 가짐 라이브러리 = 우리가 호출 jar ⇒ 스프링부트에 개발한 소스코드를 실행하는 모든 것을 가지고 있음 스프링 부트 jar 구성 요소 (BOOT-INF, org/springframework/boot/loader, META-INF) BOOT-IN..
-
Java Study[2022-11-01] - 스프링부트 프로젝트(JPA 보충 내용)백엔드 2022. 11. 1. 21:52
🔸 2022-11-01 화요일 [JPA 보충 자료] 1. JPA 일반적인 스프링 기반 프로젝트에서 데이터 CRUD 처리는 MyBatis를 사용했었음 각 SQL 쿼리문을 모두 직접 손수 작성하는 것은 쉽지 않음 이에 따라 MyBatis와 일반적인 GET, POST 방식보다는 JPA와 Rest API를 이용한 비동기 방식이 대두됨 JPA는 자바 객체와 DB 테이블 간 매핑을 처리하는 ORM(Object Relational Mapping) 기술의 표준 ORM은 테이블 구조화 클래스인 VO(DTO) 클래스를 테이블과 매핑하는 개념 JPA에서 테이블과 매핑되는 테이블 구조화 클래스를 Entity(엔티티) 클래스 즉, Entity 클래스가 테이블이라고 쉽게 생각하면 좋음 JPA Properties => JPA 관련..
-
Java Study[2022-10-31] - 스프링부트 프로젝트(JPA CRUD)백엔드 2022. 10. 31. 23:28
🔸 2022-10-31 월요일 [스프링 부트 프로젝트] 1. JPA CRUD 보통 자바 코딩 시 new 키워드를 사용해 직접 객체를 생성하여 아래 userRepository로 안에 포함된 save(), count() 등의 메서드를 사용하였음 private UserRepository userRepsitory = new UserRepository(); public void create() { userRepository.save(); userRepository.count(); } @Autowired란 Spring의 가장 큰 장점 대표적인 디자인 패턴 DI(의존성 주입), Dependency Injection 직접 객체를 만들지 않고, 이러한 객체들을 Spring이 직접 관리하고, 의존성을 주입시키도록 함 과거..
-
Java Study[2022-09-19] - 객체지향프로그래밍(set 인터페이스, override 후 equalse(), hashCode() 재정의)백엔드 2022. 9. 19. 22:52
🔸 2022-09-19 월요일 [객체지향프로그래밍] 1. Set 인터페이스 Iterator로 순회하기 set은 get[i]를 가져오는 것이 아니라 Iterator를 이용해서 순회하는 것 MemberHashSet 생성 private HashSet hashset; public MemberHashSet() { hashSet = new HashSet(); } public void addMember(Member member) { hashSet.add(member); } member 추가 시 public void addMember(Member member) member 삭제 시 public boolean removeMember(int memberId) => memberId를 알아야 삭제 가능 memberId를 알려..
-
Java Study[2022-09-18] - 객체지향프로그래밍(set 인터페이스, Iterator() 학습)백엔드 2022. 9. 18. 23:32
🔸 2022-09-18 일요일 [객체지향프로그래밍] 1. Set 인터페이스 Iterator로 순회하기 Collection의 개체를 순회하는 인터페이스 ArrayList 같은 경우, get(i)가 있어서 순회를 할 수 있는데, Set 인터페이스 같은 경우, 내부적으로 순서대로 저장되지 않음 => get(i)처럼 몇 번째 요소를 꺼낼 수 없음 Iterator 객체 이용하기 iterator() 메서드 호출 Iterator ir = memberArrayList.iterator(); Iterator에 선언된 메서드 메서드 설명 boolean hashNext() 이후에 요소가 더 있는지를 체크하는 메서드이며, 요소가 있다면 true를 반환 E next() 다음에 있는 요소를 반환 HashSet set = new H..
-
Java Study[2022-09-17] - 객체지향프로그래밍(Stack과 Queue 구현하기)백엔드 2022. 9. 18. 00:09
🔸 2022-09-17 토요일 [객체지향프로그래밍] 1. Stack과 Queue 구현하기 Stack은 이미 기본 제공 Queue는 ArrayList 이용해서 많이 사용 Stack 구현하기 LIFO(Last In First Out) : 맨 마지막에 추가된 요소가 가장 먼저 꺼내지는 자료 구조 이미 구현된 클래스가 제공됨 ArrayList나 LinkedList로 구현할 수 있음 게임에서 무르기, 최근 자료 가져오기 등에 구현 스택에서 요소 추가(push), 요소 꺼내어(pop) 삭제하기 Queue 구현하기 FIFO(First In First Out) : 먼저 저장된 자료가 먼저 꺼내지는 자료 구조 선착순, 대기열 등을 구현할 때 가장 많이 사용되는 자료 구조 ArrayList나 LinkedList로 구현할 ..
-
Java Study[2022-09-16] - 객체지향프로그래밍(List 인터페이스)백엔드 2022. 9. 16. 23:14
🔸 2022-09-16 금요일 [객체지향프로그래밍] 1. List 인터페이스 하나의 자료를 위한 인터페이스 Collection 하위 인터페이스 객체를 순서에 따라 저장하고, 관리하는데 필요한 메서드가 선언된 인터페이스 배열의 기능을 구현하기 위한 메서드가 선언됨 ArrayList, Vector, LinkedList ArrayList와 Vector 객체 배열 클래스 Vector는 자바 2부터 제공된 클래스 일반적으로 ArrayList를 더 많이 사용 Vector는 멀티 쓰레드 프로그램에서 동기화를 지원 동기화(Synchronization) : 두 개의 쓰레드가 동시에 하나의 리소스에 접근할 때 순서를 맞추어서 데이터의 오류가 방지하지 않도록 함 capacity(배열의 용량)와 size(배열 안의 요소 개수..
-
Java Study[2022-09-15] - 객체지향프로그래밍(컬렉션 프레임워크)백엔드 2022. 9. 15. 22:52
🔸 2022-09-15 목요일 [객체지향프로그래밍] 1. 컬렉션 프레임워크 프로그램 구현에 필요한 자료구조와 알고리즘을 구현해 놓은 라이브러리 java.util 패키지에 구현되어 있음 개발에 소요되는 시간을 절약하고 최적화 된 라이브러리를 사용할 수 있음 Collection 인터페이스와 Map 인터페이스로 구성됨 Collection 인터페이스 하나의 객체의 관리를 위해 선언된 인터페이스로 필요한 기본 메서드가 선언되어 있음 하위에 List, Set 인터페이스가 있음 분류 설명 List 인터페이스 순서가 있는 자료관리, 중복 허용. 해당 인터페이스를 구현한 클래스는 ArrayList, Vectior, LinkedList, Stack, Queue 등이 있음 Set 인터페이스 순서가 정해져 있지 않음, 중복을..