Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

밤빵's 개발일지

[TIL]20240701 Spring 입문 ① 본문

개발Article

[TIL]20240701 Spring 입문 ①

최밤빵 2024. 7. 1. 23:32

본 과정 12일차는 4주차 내용을 정리하고싶었는데, 제네릭과 예외처리를 아직 헷갈려서 비공개로 올려놓고 

Spring 들으면서 중간중간 정리하는중! 인데..... 음.. 어렵다. 강의시간이 짧아서 잘 이해할 수 있을거라고 생각했는데

역시 3주차가 너무 부족한 탓은 아닐까 또 주눅드는중.... 과제제출을 위해 열심히 강의를 듣고있지만 계속되는 인텔리제이 오류에 멘붕과 딜레이 여러 상황으로 멘탈이 가루가되고있다. 나... 완주할 수 있나..? 

 

[Spring 입문 강의 정리]

 

▶ jackson (Java Script Object Notation)

java용 JSON처리 라이브러리. JSON데이터를 java객체로 변환하거나 그 반대로 변환하는 작업에 사용.

 

JAVA 객체를 JSON으로 직렬화 → sirialization

JSON을 JAVA객체로 역직렬화 → Deserialization

 

▶ Dto (Data Transfer Object)

순수한 java class 객체. 주로 서비스 계층과 데이터 베이스 계층 간의 데이터 전송 또는 컨트롤러와 서비스 계층 간의 데이터 전송에 사용. 비즈니스 로직을 포함하지 않고, 단순히 데이터를 전달하는 역할. 

client에서 보내는 데이터를 객체로 처리할 때 사용. 

필요한 데이터만 캡슐화하여 전송하고, 민감한 데이터를 숨길 수 있는 보안성을 가지고있다. 클라이언트와 서버 간의 데이터 형식을 분리해서 더 유연한 데이터 전송을 가능하게 한다. 형식을 분리해서 코드의 유지보수성을 높인다. 

 

▶ SQL 제약조건

SQL에서 자주 사용되는 제약 조건들.

→  PRIMARY KEY : 기본 키. 테이블에서 각 행을 고유하게 식별하는 하나의 컬럼이나 컬럼 그룹에 적용. 기본 키는 고유해야하고 null 값을 가질 수 없다 데이터의 중복 방지와, 데이터를 빠르게 찾을 수 있다는 장점이 있다. . 

→ FOREIGN KEY : 외래 키. 한 테이블의 컬럼이 다른 테이블의 기본 키과 일치해야 한다. 하나의 테이블을 다른 테이블에 의존하게 만들고 데이터의 무결성을 보장해준다.  두 개의 테이블을 연결하는 다리 역할을 해주는 키. 데이터가 새롭게 추가될 때 외래 키에 해당하는 값이 외래 키가 참조한느 테이블에서 존재하는지를 확인한다. 

→ UNIQUE : 해당 필드는 서로 다른 값을 가져야만 한다. 한 테이블에 여러개의 UNIQUE 제약 조건을 가질 수 있다. 

→ NOT NULL : 해당 필드는 null값을 저장할 수 없게된다. 

→ Auto_INCREMENT : 컬럼의 값이 중복되지 않게 1씩 자동으로 증가해줘 고유번호를 생성해준다. 

→ CASECADE :  FOREIGN KEY로 연관된 데이터를 삭제, 변경 할 수 있다. 

 

▶ 쓰리레이어 아키텍쳐 ( three-layer architecture )

세 개의 계층으로 구성된 아키텍쳐. 소프트웨어 개발에서 애플리캐이션을 구조화하는 일반적인 방법 중 하나로, 프레젠테이션 계층, 비즈니스로직 계층, 데이터 접근 계층의 세가지 주요 계층으로 나뉘고 각 계층은 특정역할을 담당, 이를 통해 코드의 유지보수성과 확장성을 높일 수 있다. 

 

→ 프레젠테이션 계층 : 사용자와 상호 작용하는 부분으로 UI또는 관련 로직을 처리. 사용자 입력을 받고 비즈니스 로직 계층에 전달한다. 사용자 인터페이스관리와 사용자 요청 수집및 검증. 비즈니스 계층에 전달하고, 받은 결과를 사용자에게 표시한다. ▷ controller 

→ 비즈니스 로직 계층 : 애플리케이션의 핵심 로직을 처리하는 부분. 비즈니스 규칙을 적용하고, 데이터 접근 계층과 프레젠테이션 계층간의 중재역할을 한다. 트랜잭션 관리 ▷ Service 

→ 데이터 접근 계층 : 데이터베이스와의 상호 작용을 처리하는 부분. 데이터베이스에서 데이터를 조회, 삽입, 업데이트, 삭제하는 로직을 포함한다. 데이터베이스와의 통신관리와 데이터 접근 로직 캡슐화. 데이터 베이스 쿼리 수행 및 결과를 반환한다. ▷ Repository , JPA, Hibernate 등 

 

각 계층이 독립적으로 동작해서 변경사항이 발생해도 다른 계층에는 미치는 영향을 최소화 할 수 있다. 

 

▶ JPA (Java Persistence API)

자바에서 객체와 관계형 데이터베이스 간의 매핑을 관리하는데 사용하는 표준. JPA를 사용하면 자바 객체를 데이터베이스 테이블에 매핑해서 객체지향 프로그래밍과 관계형 데이터베이스 간의 차이를 줄일 수 있다. JPA는 인터페이스 모음이며 Hibernate같은 여러 구현체가 있다. 

▷ 동작 원리 

→ Entity 매핑 : java클래스는 @Entity 어노테이션을 통해 데이터베이스 테이블에 매핑된다. 

→ 영속성 컨텍스트 : 영속성 컨텍스트를 통해 Entity 객체를 관리한다. Entity객체를 데이터베이스와 동기화한다. 

→ Entity 관리 : EntityManager에 의해 관리되고 , EntityManager는 엔티티의 생명주기를 관리하고 데이터베이스 연산을 수행한다. 

▷ JPA의 주요 이점

→ 객체지향 데이터베이스 처리로 객체지향 프로그래밍 모델을 사용하여 데이터베이스 처리를 단순화 한다. 

→ 자동화된 CRUD작업으로 기본적인 CRUD 작업을 자동으로 처리하는 메서드를 제공한다. 

→ 데이터베이스에 독립적이여서 다양한 데이터베이스를 지원한다. 

→ 표준화 : 자바 표준의 일부로 여러 구현체에서 일관된 API를 제공한다. 

이와 같이 JPA를 사용하면 데이터베이스와의 상호 작용이 더 쉬워지고, 코드의 가독성과 유지보수성이 향상된다. 

 

▶ 영속성 컨텍스트(Persistence Context)

JPA의 핵심 개념 중 하나로 엔티티 객체와 데이터베이스간의 상태를 관리하는 일종의 1차 캐시역할. 객체가 유지되는 시간이나 객체의 위치를 자유롭게 유지하고 이동할 수 있는 성질을 의미한다. 데이터베이스와 동기화 하는 중요한 기능도 수행한다. (JPA를 통해 SQL을 직접 작성하지 않아도 DB에 데이터를 저장하거나 조회할 수 있고 수정, 삭제 또한 가능하다. 

→ 강의 듣다가 실습하는 중 계속 오류나서 강의를 건너뛰었다....과제하고 다시 들어야지...후...

 

▶ 트랜잭션(Transaction)

데이터베이스에서 일련의 연산을 하나의 논리적 단위로 묶은 것. 데이터베이스의 데이터들을 안전하게 관리하기위해서 생겨난 개념으로 가장 큰 특징은 여러개의 SQL이 하나의 트랜잭션에 포함될 수 있다는 점이다. 모든 SQL이 성공적으로 수행되면 데이터베이스에 영구적으로 변경을 반영하지만(Commit) 하나라도 실패하면 모든 변경을 되돌린다다. (rollback)

트랜잭션의 주요 목적은 데이터의 일관성과 무결성을 보장하는 것이다. 

@ Transactional : 트랜잭션 관리 기능을 활성화하고 클래스나 메서드 수준에서 사용할 수 있다. 

 

 

😵‍💫오늘의 회고 

자바 언어 문법만 하다가 새로운거 들어서 좀 재밌다? 했더니 아니다... 헷갈리는 개념 들이 많아서 이젠 @ 붙은거만 보면 또 새로운 뭐가 나왔다 라는 생각에 손과 머리가 바빠진다.. 과제제출 날짜는 다가오고 강의는 산더미 만큼 남았고, 입문강의 끝나면 숙련. 숙련끝나면 심화... 아직 자바 문법도 헤매는데 Spring 들으려니 머리가 터지는 것 같다. 시간이 없어도 TIL은 꼭 쓰려고하는데 짧은 시간에 많은 내용을 머리에 담아서 그런건지 많이 기억나는게 없다(이게 맞아..?). 공부하는건 괜찮은데 시간에 자꾸 쫒겨서 마음만 급해지는 중 ㅠㅠ.... 이제 과제하러 가야지..... 과제 해결하고 한줄한줄 주석공부하는게 공부가 많이 된대서 기대하는 중 ....!