분류 전체보기 78

[암기] 응집도의 유형

우논시절 통순기 우연적 응집도 : 서로 간에 어떠한 의미 있는 연관 관계도 없는 기능 요소. 서로 다른 상위 모듈에 의해 호출되어 처리상의 연관성이 없는 서로 다른 기능을 수행논리적 응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리시간적 응집도 : 특정 시간에 처리되어야하는 활동을 한 모듈에서 처리절차적 응집도 : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행통신적 응집도 : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여있음순차적 응집도 : 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용기능적 응집도 : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도

[암기] 결합도의 유형

내공외제스자 내용 결합도 : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도. 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용상으로 결합하여 있는 경우. 공통 결합도 : 파라미터가 아닌 모듈 밖에 선언된 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도. 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도. 외부 결합도 : 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜 또는 디바이스 인터페이스를 공유할 경우의 결합도. 외부 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의 결합도. 제어 결합도 : 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경..

멋쟁이사자처럼 여기톤 대비 토이 프로젝트 후기

6월 13일을 끝으로 약 3주간 걸친 여기톤 대비 토이 프로젝트가 끝이 났다. 원래는 끝나자마자 적으려고 했는데, 생각보다 많은 일을 맡게 된 관계로... 회복하는 데에 시간이 조금 많이 걸렸다. (사실 프젝 하나 할 때마다 며칠은 골골댄다) 그동안 나름 많은 팀 프로젝트를 해왔었다. 안드로이드 애플리케이션 두 개를 프론트로 개발하고 유니티로 게임 개발도 해보았는데, 언제나 나를 가장 힘들게 했던 부분이 소통이었다. 특히 백과 프론트가 별도로 존재하면 어디까지 프론트가 개발하고 어디까지 백이 개발할 것인지, 명세서를 언제 넘겨줄 것인지 등을 회의하고 전체 개발 일정을 조율하는 등 정말 많은 이야기를 해야했다. 이전 팀프로젝트 때 전체 팀장을 맡았는데, 백 한 명이 자신이 맡은 부분을 하지도 않고 잠수를 ..

[멋사/Mac OS] 5주차 정기 세션 (Part 4. 영속성 전이 ~ Part 6. Auditing)

4. 영속성 전이(1) 영속성 전이- 영속성 전이 : 엔티티의 상태를 변경할 때 해당 엔티티와 연관된 엔티티의 상태 변화를 전파해주는 기능- 부모 엔티티 상태 변경 -> 자식 엔티티 상태 자동 변경 영속성 전이 조건1. 자식 엔티티가 독립적으로 존재하지 않고 부모 엔티티에 완전히 의존적일 때2. 부모가 저장되면 자식도 같이 저장, 부모가 삭제되면 자식도 같이 삭제 (유사한 라이프 사이클)(2) Cascade- Cascade: 부모 엔티티의 상태 변화가 자식 엔티티에도 자동으로 전파 (부모의 생명주기에 자식도 함께 묶음)PERSISTREMOVEMERGEREFRESHALL부모 저장 시 자식 저장부모 삭제 시 자식 삭제부모 변경 시 자식 변경부모 새로고침 시 자식도 새로고침모든 옵션 포함 - 예시 코드@Ent..

[멋사/Mac OS] 5주차 정기 세션 (Part 3. QueryDSL 소개 및 JPQL과 비교)

3. QueryDSL 소개 및 JPQL과 비교(1) JPQL의 단점- 오타나 문법 오류를 컴파일 시에 찾을 수 없음-> 실행 전까지 오류 발견이 불가능-> 개발 중 오류 발견이 어렵고, 실행 중 예외 발생 - 동적 쿼리 작성이 불편-> if문이 많아질수록 가독성이 나빠짐(2) QueryDSL의 장점- 타입 안전성 보장-> 컴파일 시점에 username이 String 타입인지 확인 가능-> 오타가 있으면 바로 에러가 발생하여 실행 전에 오류를 방지 - 동적 쿼리 작성이 간편-> BooleanBuilder를 사용해서 조건을 유동적으로 추가 가능-> if문을 최소화하고 가독성을 높임 JPQLQueryDSL문법문자열 기반코드 기반타입 체크런타임 오류 가능컴파일 시 오류 잡힘동적 쿼리어렵고 복잡유연하고 깔끔ID..

[멋사/Mac OS] 5주차 정기 세션 (Part 2. JPA 쿼리 작성 방법)

2. JPA 쿼리 작성 방법(1) JPQL과 쿼리- JPQL : JPA 전용 객체 지향 쿼리 언어, SQL과 유사하지만 엔티티 중심으로 작성SELECT e FROM EntityName e WHERE e.property = :value -> SQL과 비슷하지만 엔티티 기준으로 작성-> 테이블 이름이 아닌 클래스 이름과 필드명을 사용-> DB 독립적인 쿼리라 이식성이 좋음-> 복잡한 조건도 표현이 가능해서 유연성이 높음 - @Query : JPQL을 써먹을 수 있게 해주는 도구@Query("SELECT m FROM Member m WHERE m.age > :age")List findOlderThan(@Param("age") int age); -> 복잡한 조건, 동적 쿼리, 조인 등 자유도가 높을 때 사용->..

[멋사/Mac OS] 5주차 정기 세션 (Part 1. 실습환경 세팅)

1. 실습환경 세팅(1) DB 생성- likelionmember 데이터베이스 및 member 테이블 생성CREATE TABLES `member` ( id int auto_increment primary key, username varchar(10) not null, age int, university varchar(50));(2) SpringBoot 프로젝트 설정- application.propertiesspring.apllication.name = likelionmemberspring.datasource.driver-class-name = com.mysql.cj.jdbc.Driverspring.datasource.url = ${DB_URL}spring.datasource.usern..

[멋사/Mac OS] 4주차 정기 세션 (Part 3. 실습)

3. 실습(1) DTO (Data Transfer Object)- 계층 간 데이터 교환을 위해 사용하는 객체- 불필요한 의존성을 방지하고, 비즈니스 로직을 보호하기 위해 사용-> 프론트가 DTO로 데이터를 넣어주면, 백은 그 DTO 데이터를 엔티티에 넣어서 저장함.-> 백이 엔티티에서 DTO로 데이터를 넣어주고 json으로 프론트한테 보내줄 수 있음-> 필요한 데이터만 깔끔하게 전달 가능-> 민감 정보 노출 문제 해결-> 엔티티와 DTO는 1:1 대응하거나 일부만 대응.-> 엔티티는 DB용, DTO는 네트워크/계층 간 데이터 전달용-> 엔티티와 DTO는 변환 로직을 통해 연결됨 - MemberFormDto 생성package com.likelion13th.shop.dto;import jakarta.vali..

[멋사/Mac OS] 4주차 정기 세션 (Part 2. 엔티티 설계)

2. 엔티티 설계(1) MySQL 접속하기mysql -u root -p -u root : 사용자 이름이 rootroot 계정은 MySQL에서 최고 권한을 가진 관리자 계정.- 데이터베이스 생성/삭제- 사용자 계정 추가/삭제- 권한 부여/회수- 모든 테이블과 데이터에 접근 가능 -p: 비밀번호 입력만일 비밀번호가 없다면 엔터를 누르면 된다.(2) 데이터베이스 생성하기CREATE DATABASE shop;SHOW DATABASES; (3) application.properties 파일 코드 작성spring.application.name=shopspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql:..

[멋사/Mac OS] 4주차 정기 세션 (Part 1. JPA)

1. JPA(1) JPA란?- JAVA에서 ORM기술을 제공하는 표준 인터페이스- ORM: 객체로 연결, 객체와 테이블을 자동으로 매핑시켜 RDB 테이블을 객체지향적으로 사용할 수 있도록 해줌- 어플리케이션과 데이터베이스 연결 시 SQL 언어가 아닌 어플리케이션 개발 언어로 데이터베이스를 접근할 수 있게 함장점단점DBMS에 대한 종속성 감속복잡한 쿼리 처리가 어려움객체지향적 프로그래밍성능 저하의 위험생산성 향상학습 비용 발생재사용, 유지 보수 용이 (2) 영속성 컨텍스트- 영속성: 데이터들이 프로그램이 종료되어도 사라지지 않고 어떤 곳에 저장되는 개념 (캐시같은 건가...?)- 영속성 컨텍스트: 데이터를 영구 저장하는 환경으로 애플리케이션과 DB 사이 객체를 보관하는 가상의 DB. (논리적 개념)- En..