보근
수강평 작성수
1
평균평점
5.0
블로그
전체 3#카테고리
- 백엔드
#태그
- 인프런워밍엄스터디
- 백엔드
- 인프런
- 스터디
![[인프런 워밍업 클럽 스터디] BE 스터디 1기 3주차 발자국](https://cdn.inflearn.com/public/main/blog/default_thumbnail.png?w=260)
2024. 05. 19.
0
[인프런 워밍업 클럽 스터디] BE 스터디 1기 3주차 발자국
색션 6깃 연결하기=> https://www.notion.so/Git-f90d207e88af4eb28dad3a799cb96713AWS 연결 방법 Git Bash로 연결chmod 400 => 사용할 수 있게 권한 부여ssh -i ec2-user@ => 접속시도성공시AWS 콘솔로 연결섹션 7가장 기초적인 Linux 명력어mkdir => 폴더를 만드는 명령어ls => 현재 위치에서 폴더나 파일을 확인하는 명령어ls -l => 조금 더 자세한 정보를 확인하는 명령어cd => 폴더 안으로 들어가는 명령어cd.. => 상위 폴더로 올라가는 명령어pwd => 현재 위치를 확인하는 명령어rmdir => 비어 있는 폴더(디렉토리)를 제거하는 명령어 sudo yum update => 패키지 관리프로그램을 최신화sudo => 관리자의 권한으로 실행yum => 리눅스 패키지 관리 프로그램sudo yum install git => yum을 이용해 깃 설치=> sudo yum install git -y => 중간에 물어보지 않고 바로설치하고 싶을 때sudo yum install java-11-amazon-corretto -y java -version => 버전 확인 및 설치 확인 mysql 설치 이후엔 4주차에 이어서 과제과제 6=> https://www.notion.so/6-930d8e02b85244a6aaa3126a708633d8 과제 7=> https://www.notion.so/7-62fb6239437b4677a1374bd529cabd73 회고이번 주차는 조금 강의를 많이 듣지 못하였고 다음 주에 이어서 완강을 목표로 달리겠습니다.AWS에 연결하고 mysql 설치에서 에러가 발생하였는데 그 부분을 좀 더 정리해서 다음 주에 올리면 좋을거 같아서 적다가 지웠습니다. 배보하는 작업이 실질적으로 금액이 있는 부분이 이기에 좀 더 신경쓰며 작업해야 겠고 생소한 리눅스환경에서 하려고 하니 더 알아가야겠고 저 꼼꼼히 배워야겠다는 생각이 들었습니다.
백엔드
・
인프런워밍엄스터디
![[인프런 워밍업 클럽 스터디] BE 스터디 1기 2주차 발자국](https://cdn.inflearn.com/public/main/blog/default_thumbnail.png?w=260)
2024. 05. 12.
0
[인프런 워밍업 클럽 스터디] BE 스터디 1기 2주차 발자국
섹션 4SQl을 직접 작성하면 어떤 점이 아쉬울까?문자열을 작성하기 때문에 실수할 가능성 Up!실수를 인지하는 시점 Slow~컴파일 시점에 발견X, 런타임 시점 발견되기 때문에 오래걸림 특정 데이터 베이스에 종속됨반복작업 多테이블 하나 만들 때마다 CRUP 쿼리가 항상 필요데이터베이스의 테이블과 객체는 패러다임이 다르다.JPA ( Java Persistence API )객체와 관계형 DB의 테이블을 짝지어 데이터를 영구적으로 보관하기 위해 Java 진영에서 정해진 규칙영속성서버가 재시작되어도 데이터는 영구적으로 저장되는 속성 API정해진 규칙 ORM ( Object-Relational Mapping )객체-관계 매핑의 줄임말 장점완벽한 객체지향적인 코드재사용, 유지보수, 리팩토링 용이성DBMS(DataBase Management System) 종속성 하락단점ORM이 모든 걸 해결X객체 - 관계 간의 불일치세분성 ( Granularity )경우에 따라서 DB에 있는 테이블 수보다 더 많은 클래스를 가진 모델이 생길 수 있음상속성 ( Inheritance )RDBMS는 객체지향 프로그래밍 언어의 특징인 상속 개념이 X일치 ( Identity )RDBMS는 기본키를 이용하여 동일성을 정의, 자바는 객체 식별( a==b )과 객체 동일성 ( a.equals(b))을 모두 정의한다.연관성 ( Associations )객체지향 언어는 방향성이 있는 객체의 참조( reference )를 사용하여 연관성을 나타내지만 RDBMS는 방향성이 없는 외래키를 이용해서 나타냄탐색 ( Navigation )자바와 RDBMS에서 객체를 접근하는 방법이 근본적으로 다르다. 자바는 그래프형태로 하나의 연결에서 다른 연결로 이동하며 탐색한다. 그러나 RDBMS에서는 일반적으로 SQL문을 최소화하고 JOIN 을 통해 여러 엔티티를 로드하고 원하는 대상 엔티티를 선택하는 방식으로 탐색Hibernate란?하이버네이트는 자바 언어를 위한 ORM 프레임워크JPA의 구현체로, JPA 인터페이스를 구현하며, 내부적으로 JDBC API를 사용JPA는 관계형 데이터베이스와 객체의 패러다임 불일치 문제를 해결할 수 있다는 점과 영속성 컨텍스트(엔티티를 영구 저정하는 환경) 제공이 큰 특징 장점생산성 Hibernate는 SQL을 직접 사용하지 않고, 메서드 호출만으로 쿼리가 수행 => SQL 반복작업을 하지 않음으로 생산성 UP!SQL을 몰라도 되는 건 아님유지보수테이블 컬럼이 변경되었을 때, 테이블과 관련된 DAO 파라미터, 결과, SQL 등을 대신 수행 => 유지보수 UP! 특정 벤더에 종속적이지 않음JPA는 추상화된 데이터 접근 계층을 제공 => 특정 벤더에 종속적이지 않음설정 파일에서 JPA에게 어떤 DB를 사용하고 있는지를 알려주기만 하면 DB 변경 가능패러다임 불일치 해결상속, 연속 관계, 객체 그래프 탐색, 비교 등 객체와 관계형 데이터베이스와의 패러다임 불일치를 해결 단점성능메서드 호출만으로 쿼리를 수행하는 것은 직접 SQL을 작성하는 것보다 성능상 좋지 않음세밀함메서드 호출만으로 DB 데이터를 조작하기에는 한계 有 => 보완하기 위해 JPQL을 지원NativeQuery를 지원하여 SQL 자체 쿼리도 작성할 수 있음러닝커브공부할거 多JPA 어노테이션@Entity스프링이 User객체와 user 테이블을 같은 것으로 바라봄@Id이 필드를 primary key로 간주함@GeneratedValueprimary key는 자동 생성되는 값MySQL의 auto_increment를 사용 = IDENTITY@Column객체의 필드와 Table의 필드를 매핑생략도 가능!! JPA를 사용하기 위해 기본 생성자 꼭 필요!!!save => 주어지는 객체를 저장하거나 업데이트 시켜줌findAll => 주어지는 객체가 매핑된 테이블의 모든 데이터를 가져옴findById => id를 기준으로 특정한 1개의 데이터를 가져온다.application.yml 세팅Spring Data JPA복잡한 JPA 코드를 스프링과 함께 쉽게 사용할 수 있도록 도와주는 라이브러리By 앞에 들어갈 수 있는 구절 정리find : 1건을 가져온다. 반환 타입은 객체가 될 수도 있고, Optional이 될 수도 있다.findAll : 쿼리의 결과물이 N개인 경우 사용. List 반환exists : 쿼리 결과가 존재하는지 확인. 반환 타입은 booleancount : SQL의 결과 개수를 센다. 반환 타입은 long이다.GreaterThan : 초과GreaterThanEqual : 이상LessThan : 미만LessThanEqual : 이하Between : 사이에StartsWith : ~로 시작하는EndWith : ~로 끝나는트랜잭션이란?@Transactional쪼갤 수 없는 업무의 최소 단위commit => 트랜잭션 성공!rollback => 트랜잭션 실패ㅠ! 주의 사항 !IOException과 같은 Checked Exception은 롤백이 일어나지 않는다.영속성 컨텍스트란?테이블과 매핑된 Entity 객체를 관리/ 보관하는 역할=> 스프링에서는 트랜잭션을 사용하면 영속성 컨텍스트가 생겨나고, 트랜잭션이 종료되면 영속성 컨텍스트가 종료된다.특수 능력 4가지// 영속성 컨텍스트의 특수 능력 4가지 // 1 . 변경감지 (Dirty Check) // 영속성 컨텍스트 안에서 불러와진 Entity는 명시적으로 save하지 않더라도, 변경을 감지해 자동으로 저장된다. // 2. 쓰기 지연 // DB의 INSERT / UPDATE / DELETE SQL을 바로 날리는 것이 아니라, 트랜잭션이 commit될 때 모아서 한 번만 날린다. // 3. 1차 캐싱 // ID를 기준으로 Entity를 기억한다! // 이렇게 캐싱된 객체는 완전이 동일하다! // 4. 지연로딩(Lazy Loading) // @OneToMany의 fetch 옵션 // 지연로딩을 사용하게 되면, 연결되어 있는 객체를 꼭 필요한 순간에만 가져온다색션 4 회고JPA를 사용하면 더 편리하고 더 단순하게 코드를 사용할 수 있으나 JPA에 대한 공부를 꼼꼼하게 해야 올바르게 작성할 수 있을거 같고 트랜잭션의 기능이 처음 듣는 개념이지만 스프링을 이용할 때 너무나 좋은 기능이고 이 기능을 프로젝트에 적용시켜 보고 싶었습니다.섹션 51. 연관관계를 사용하면 무엇이 좋을까??각자의 역할에 집중하게 된다! (= 응집성)새로운 개발자가 코드를 읽을 때 이해하기 쉬워진다.테스트 코드 작성이 쉬워진다.2. 연관관계를 사용하는 것이 항상 좋을까?지나치게 사용하면, 성능상의 문제가 생길 수도 있고도메인 간의 복잡한 연결로 인해 시스템을 파악하기 어려워질 수 있다.또한 너무 얽혀 있으면, A를 수정했을 때 B C D 까지 영향이 퍼지게 된다.비즈니스 요구사항, 기술적인 요구사항, 도메인 아키텍처 등 여러 부분을 고민해서 연관관계 사용을 선택해야 한다.! 원하는 기능에 대한 Entity는 필요한 서비스기능마다 하나씩 적용해서 하자!!=> 바뀔 경우 하나의 Entity만 수정하는 방향이 좋기 때문색션 5 회고색션 4의 기능들을 활용하는 색션이였고 이번 수업을 진행하면서 오타를 많이 내서 시간 지연이 많이 되었지만 더 강의를 오래 볼 수 있게 되서 좋았고 4-5색션에 중요성이 큰거 같고 더 꼼꼼히 해보고 혼자서 더 적용시켜보는 실습을 많이 진행해 보아야겠습니다.과제 4https://www.notion.so/4-7697c4ff27e24d8796886fd8fa5d622a=> 배운 내용을 작게나마 실습해본 과제라고 생각합니다. 실습을 통하여 흘러가는 거를 생각해본 계기가 되었습니다. 과제 5https://www.notion.so/5-260b9f545f2942a79ba1f9308303dba1=> 주사위에 대해 어떤 방식을 통해 할지 고민하다 Map을 활용하면 더 깔끔하게 나올거같아 Map에 대해 공부하면서 적용시켜 보았습니다. 그리구 성공하게 되서 Map에 대해 알게된 과제가 되었습니다.
백엔드
![[인프런 워밍업 클럽 스터디] BE 스터디 1기 1주차 발자국](https://cdn.inflearn.com/public/main/blog/default_thumbnail.png?w=260)
2024. 05. 07.
0
[인프런 워밍업 클럽 스터디] BE 스터디 1기 1주차 발자국
강의 수강일주일 동안 학습했던 내용을 요약해주세요.일주일 간의 학습 내용에 대한 간단한 회고를 작성해 주세요.섹션 0.Java, inteliiJ, Postman, MySQL, git 설치 방법에 대해 배웠습니다.Cmd를 통하여 Mysql에 접속하는 방법으로 데이터베이스, 테이블 조작을 할 수 있다는 것을 알게 되었습니다.MySQL CMD 접속 방법mysql -u [계정] -p [데이터베이스]저는 root 계정과 비밀번호를 설정하여mysql -u root -p 타이핑 후비밀번호 타이핑CMD에서 MySQL을 찾지 못하는 경우에는환경변수에 시스템 변수에 Mysql폴더의 bin폴더까지 주소를 복사하여 넣어주어야합니다. 섹션 0 회고다시 Java, inteliiJ, Postman, MySQL, git 설치 방법에 대해 보게 되니까 예전에 해봤던 기억이 떠오르고 미쳐 몰랐던 inteliiJ에 대해 알아가는 시간이 되었고 Postman을 저번 프로젝트를 할때는 자주 사용하지 않았는데 간편하게 사용할 수 있는 테스트 도구라서 자주 사용할 거 같습니다. 섹션 1.컴파일 : 인간이 이해하기 쉬운 언어를 기계어로 번역하는 과정컴파일러 : 컴파일을 하는 프로그램바이트 코드 : 0 , 1로 이루어진 코드, 컴퓨터가 이해하는 기계어java는 JVM을 통하여 기계어로 OS에 맞게 번역해준다.JVM(Java Virtual Machine) 자바 가상 머신의 약자OS 별로 존재바이너리 코드를 읽고 검증하고 실행 JRE(Java Runtime Environment)JVM + 자바 프로그램 실행에 필요한 라이브러리 파일 등JVM의 실행환경을 구현JDK(Java Development Kit)JRE + 개발을 위한 도구컴파일러, 디버그 도구 등이 포함 섹션 1 회고자바의 작동원리와 SpringBoot에 대한 기본적인 작동 흐름과 CRUD에서 CR에 대해 배우게 되었고, 잘 읽어야 다른 동작에 대해 쉽게 접근할 수 있을거 같아 배운것을 돌아보고 원리에 대해 되집어 보는 시간이 되었습니다. 섹션 2.Mysql에서 테이블만들고, 데이터를 조작하는 방법을 배움sql문을 통하여 intelliJ에서 Update, Delete에 관한 API를 작성섹션 2 회고inteliiJ와 Mysql을 연결하는 작업을 하였습니다. 연결하고 올바르게 데이터가 들어가는게 중요하다 생각이 들었고 sql문이 잘못 작성되어 곤란한 경우가 있었습니다. 찾는 것도 힘들었지만 sql문에 대해 좀 더 정확하게 작성하여 올바르게 전송되게끔 꼼꼼히 작성해보겠습니다.섹션 3. 클린코드에 대해 배우고 기존에 있던 코드를 리펙토링하며 더 분리시키고 깔끔한 코드로 작성하는 방법을 배웠습니다. 섹션 3 회고클린코드에 중요성과 작성하고 있는 코드에서 더 좋은 코드가 될 수 있을 지에 대한 고민이 많이 생긱나는 강의였고, 개발에는 끝없는 고민으로 시작되는거 같습니다.미션미션을 해결하는 과정을 요약해 주세요.미션 1 : https://www.notion.so/1-9ebaa9acab404522894cadf7aada5eb0 -> 구글 검색을 통해서 어노테이션에 대한 미션에 대한 정보들에 대해 보고 실습해보았습니다.미션 2 : https://www.notion.so/2-8e30c53ecab443e5bb3d3a1bcf8abcb4-> 강의를 보고 원하는 Get, Post라던지 관한 정보를 입력하고 어떻게 출력되는지 건드려보게 되었습니다.미션 3 : https://www.notion.so/3-7516e809e6134f0fbc255c3f57d239bb-> 검색을 통하여 람다식에 대해 알게 되었고 잘 활용만 한다면 코드를 단축시키고 클린 코드를 만들어 보게끔 연습을 해보아야겠다는 생각이 들었습니다.
백엔드
・
백엔드
・
인프런
・
스터디




