java 7

JAVA 객체 지향 설계 [S.O.L.I.D]

의존선 관리는 우리 대부분이 직면한 문제인데, 의존성이 잘못 관리된다면 변경하기도 어렵고 재사용하기 어려운 코드가 된다. 반면 의존성이 잘 관리된 코드는 유연하고 재사용이 가능한 코드가 된다. 참고로 SOLID는 어떠한 특정 프로그래밍 언어 혹은 프레임워크를 위해 만든 원칙이 아니다. SOLID는 프레임워크도 라이브러리의 패턴도 아니며, 특정 기술에 국한되지 않는다. 그래서 객체지향을 프로그래밍 언어나 프레임워크에 원칙을 자유롭게 적용할 수 있다. 객체지향 4대 원칙 캡슐화 메서드를 통해서 간접적으로 노출 상속 상속이 적절한 경우는 다른 클래스의 메서드가 아닌 필드를 사용하고 싶을 때 사용 메서드 상속이 부적절한 이유는 대부분의 경우 리스코프 치환 원칙을 위반할 가능성이 높기 때문이다. 메서드를 쓸 때는..

JAVA 2023.10.11

JAVA 객체지향 관련 [Optional, if문, Getter/Setter]

10/10 화요일 1. 객체지향 관련 이론 및 문법 Optional 자바에서 null 처리를 쉽게 처리하기 위해 부가적으로 나온 자료형 public Optional 메서드명() { return Optional.ofNullable(자료); } 예외처리 코드를 간소화하게 사용할 수 있다. -> .orElseThrow(( ) -> new 예외클래스( )) Optional 객체를 만드는 정적 팩토리 패턴 메서드 명령어 Optional.of(자료); // 생성 시점에서 null이면 예외 발생 Optional.ofNullable(자료); // 생성 시점에서는 null여부 상관없지만 처리가 쉬움 Optional.empty(); // 빈 옵셔널 만들고 싶은 경우(거의 쓸 일 없음) JPA와 같이 Optional로 된 ..

JAVA 2023.10.10

JAVA 데이터베이스 연동 (2) [리포지토리, DAO 설계]

1. 리포지토리 인터페이스 설계 Spring Data JPA는 JpaReposiroy를 기반으로 더욱 쉽게 데이터베이스를 사용할 수 있는 아키텍처를 제공한다. 스프링 부트로 JpaReposiroy를 상속하는 인터페이스를 생성하면 기존의 다양한 메서드를 손쉽게 활용할 수 있다. 여기서 이야기하는 리포지토리는 Spring Data JPA가 제공하는 인터페이스이다. 엔티티를 데이터베이스의 테이블 구조를 생성하는 데 사용했다면 리포지토리는 엔티티가 생성한 데이터베이스에 접근하는 데 사용된다. 리포지토리를 생선하기 위해서는 접근하려는 테이블과 매핑되는 엔티티에 대한 인터페이스를 생성하고 JpaReposiroy를 상속 받으면 된다. JpaReposiroy를 상속받을 때는 대상 엔티티와 기본값 타입을 지정해야 한다...

JAVA 2023.08.29

JAVA 데이터베이스 연동 (1) [ORM, JPA, 영속성 컨텍스트, 엔티티]

애플레케이션은 데이터(리소스)를 주고받는 것이 주 목적이다. 엔터프라이즈급 애플리케이션에서 정상적으로 로직이 동작하기 위해서는 데이터베이스가 꼭 필요하다. 1. ORM (Object Relational Mapping) ORM은 객체(클래스) 관계 매핑을 의미한다. 자바와 같은 객체지향 언어에서 의미하는 RDB(Relational Databse)의 테이블을 자동으로 매핑하는 방법이다. 클래스는 데이터베이스의 테이블과 매핑하기 위해 만들어진 것이 아니기 때문에 RDB 테이블과 어쩔 수 없는 불일치가 존재한다. ORM은 이 둘의 불일치와 제약사항을 해결하는 역할이다. ORM을 이용하면 쿼리문 작성이 아닌 코드(메서드)로 데이터를 조작할 수 있다. 1.1 ORM의 장점 - ORM을 사용하면서 데이터베이스 쿼리를..

JAVA 2023.08.29

플레이데이터 데이터 엔지니어링 7월 4주차 회고

플레이데이터 데이터 엔지니어링 7월 4주차 회고 목차 1. 전반적인 느낌 2. 좋았던 점 3. 아쉬웠던 점 4. 개선할 점 5. 다음주 계획 1. 전반적인 느낌 HTML, CSS, JSP, 서블릿에 대해 배웠다. 이번주는 대체적으로 프런트엔드 쪽의 부분을 배웠다. 그래서 그런지 한 주만에 너무 많은걸 배운건 아닌가라는 느낌이 있다. 하지만 내가 원하는 것은 백엔드이기 때문에 나쁘지 않았다. 그리고 이번주에 배운 것은 변화가 바로바로 한 눈에 보여 재미있었다. 2. 좋았던 점 대학교에서 한 번도 배우지 못한 것을 배워 걱정도 많았지만, 결과가 한 눈에 보이고 HTML과 CSS의 코드는 대체적으로 쉽운것같아 좋았다. 3. 아쉬웠던 점 JSP, 서블릿에 대한 이해가 아직 안되었다. 현재는 더 효율적인 것들이 ..

플레이데이터 2023.07.31

플레이데이터 데이터 엔지니어링 7월 3주차 회고

플레이데이터 데이터 엔지니어링 7월 3주차 회고 목차 1. 전반적인 느낌 2. 좋았던 점 3. 아쉬웠던 점 4. 개선할 점 5. 다음주 계획 * 7월 2주차는 코로나의 영향으로 인해 일부 내용을 다루지 못했습니다 1. 전반적인 느낌 미니 프로젝트 진행과 SQL, 컬렉션 프레임워크, 스레드, 입출력 스트림에 대해 배웠다. 자바의 심화과정을 배움으로써 자바에 한 걸음 더 다가갔다. 이번주에 배운 것은 앞으로의 과정에 있어 아주 중요하다고 느끼기에 복습하고, 예제문제를 많이 풀어야겠다. 2. 좋았던 점 이전에는 웹서핑을 통해 예시 코드를 복사 붙여넣기 하여 그럴듯하게 사용했다면, 이제는 개념을 이해하고 더 효율적으로 사용할 수 있게 되어 좋았다. 3. 아쉬웠던 점 효율적으로 사용할 수 있겠지만, 아직 기본적인..

플레이데이터 2023.07.25

[문제풀이] 백준 JAVA - #10807 개수 세기

문제 총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다. 출력 첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다. 예제 입력 1 복사 11 1 4 1 2 4 2 4 2 3 4 4 2 예제 출력 1 복사 3 예제 입력 2 복사 11 1 4 1 2 4 2 4 2 3 4 4 5 예제 출력 2 복사 0 코드 import java.util.Scanner; public class Main { public static voi..

JAVA 2023.07.17