java 31

ORM(Object-Relational Mapping)

🔷 ORM이란?- 우리가 일반 적으로 알고 있는 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑(연결)한다는 뜻이며, 기술적으로는 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이라고 보면된다.- 애플리케이션의 객체 모델과 DB의 관계형 모델 사이의 불일치를 해결- SQL 쿼리를 직접 작성하는 대신 객체 지향적인 방식으로 데이터를 처리 가능 ※ 객체와 테이블 매핑: 클래스와 DB 테이블을 연결.예) Java나 Python의 클래스는 RDB의 테이블과 연결, 클래스의 속성은 테이블의 컬럼과 대응※ 자동 영속화: 객체를 DB에 저장, DB에서 객체를 조회하는 작업을 자동화예) 객체를 생성하고 저장하면 ORM이 이를 DB에 저장, 반대로 DB에서 조회된 ..

Java 싱글톤 패턴(Singleton Pattern)

🔷 디자인 패턴- 개발자들이 개발 과정에서 하나의 패턴으로 묶어놓은 코드 조합- 소프트웨어 개발에서 자주 발생하는 문제를 해결하기 위한 효율적이고 재사용 가능한 솔루션- 개발자들이 오랜 시간에 걸쳐 검증한 베스트 프랙티스를 코드로 묶어놓은 것- https://refactoring.guru/ko/design-patterns 에서 다양한 디자인 패턴 확인 가능 🔷 싱글톤 패턴- 디자인 패턴 중 하나로, 특정 클래스의 인스턴스가 오직 하나만 존재하도록 보장하는 패턴- 즉, 단 1개만 존재해야 하는 객체를 생성하여 공유하고자 할 때 사용한다.- 애플리케이션에서 전역적으로 공유되는 객체가 필요할 때 사용 => 애플리케이션 설정, 데이터베이스 연결, 로그 파일 관리 등 🔷 싱글톤 패턴 구현싱글톤 패턴을 구현하..

백엔드/Java 2024.11.15

Java 네트워크(Network)

- Java는 네트워크 프로그래밍을 지원하는 다양한 클래스들을 제공- 인터넷 주소 확인이나 웹 콘텐츠를 읽는 등의 작업- InetAddress와 URL 클래스 사용 가능 🔷 실습(1) : InetAddress package day11;import java.io.IOException;import java.net.Inet4Address;import java.net.InetAddress;import java.net.URL;public class Network01 { public static void main(String[] args) throws IOException { // 인터넷 주소의 정보를 확인 InetAddress ip = null; ip = Inet4Address.getByName("www...

백엔드/Java 2024.11.14

Java 쓰레드(Thread)

🔷 Thread(쓰레드) : 실제 작업을 수행하는 단위- 프로그램이 실행되면 OS로부터 메모리를 할당받아 process의 상태가 된다.- 하나의 process는 하나 이상의 Thread를 가지게 됨.- Thread가 실제 CPU에서 작업을 처리하는 최소 단위- multi-thread란 여러개의 thread가 동시에 수행되는 프로그램- CPU는 시간을 잘게 쪼개서 Thread를 번갈아 수행한다. (시분할 처리) → 사용자들은 마치 동시에 처리되는 듯한 효과를 경험한다.- Thread는 각자 자신만의 작업공간을 가짐.(context)- 각 Thread는 공유하는 자원이 있을 수 있음. (자바에서는 static instance)- 여러 Thread가 공유하는 자원을 사용하려고 경쟁 발생.- 경쟁이 발생하는 ..

백엔드/Java 2024.11.13

Java 파일 입출력 (I/O) 처리

🔷 Java에서는 다양한 방식으로 파일에 데이터를 읽고 쓸 수 있다. file : java.io.*에서 제공하는 클래스들은 try~catch / throws를 해줘야 함.Input/OutputStream (IOStream) : 단방향으로 데이터가 흘러가는 형태 🔷 java는 입력스트림, 출력스트림을 통해 데이터를 입출력함.다양한 장치에 독립적으로 운영, 일관성있게 입출력을 유지하기 위해 입출력 스트림을 통해 일관성, 독립성 제공 🔷 두가지 형태의 스트림 - 바이트 형태의 스트림 : 기본 (문자, 그림, 멀티미디어)- 문자 형태의 스트림 : 문자만 입출력할 때 사용 1. 바이트 스트림 - 입력(InputStream) : FileInputStream, BufferedInputStream, DataInp..

백엔드/Java 2024.11.04

Java 스트림(Stream)

📢 Stream(스트림) - 실제 입력(출력)되는 데이터의 흐름.  - 파이프라인으로 데이터가 흘러가는 흐름의 개념  - 스트림은 자료에 스트림을 생성하여 연산(복사본)  - 스트림 연산은 연산을 다 수행하면 소모됨.(1회성)  - 기존 자료를 복사하여 스트림을 구성하기 때문에 기존 자료의 변경을 유발하지 않음.📢 Stream(스트림)용 연산이 별도 존재중간연산최종연산메서드를 이어서 사용할 수 있음.distinct() : 중복제거filter() : 조건에 맞는 자료만 다음 스트림으로 이동limit() : 스트림의 일부를 잘라냄skip() : 스트림의 일부를 건너뜀sorted() : 정렬 ...map() : 새로운 형태로 변경 mapToInt() / mapToLong() 스트림의 최종 결과 연산 (마지..

백엔드/Java 2024.10.30

Java 람다(Lambda)

- Lambda + Stream => 람다와 스트림 - javaScript arrowFunction(화살표함수)와 비슷한 형태 - Lambda : 람다식 (식을 단순하게 표현하는 방법)                  외부 자료의 부수적인 영향(side effect)을 주지 않도록 구현하는 방법 - Stream : 자료의 대상과 관계없이 동일한 연산을 수행할 수 있도록 해주는 반복자 - 메서드 체이닝 기법을 사용 - Lambda functions : 익명클래스를 사용하여 쓰는 함수람다식의 장점람다식의 단점- 코드 간결성- 병렬처리 가능- 불필요한 연산 최소화- 가독성이 떨어짐- 반복문 사용시 성능 저하 - 람다의 표현식// javaScriptconst name = ( ) => { } //java( 매개변수..

백엔드/Java 2024.10.29

Java 제네릭(Generic)

🔷 제네릭(Generic)이란?- 데이터의 타입을 나중에 확정하는 기법 - 클래스나 메서드를 선언할 때 어떤 데이터가 올지 확신이 없다면, 제네릭 타입으로 구현 => 나중에 객체 생성시 타입을 확정하여 구현 - 객체의 타입을 컴파일 할 때 체크할 수 있어서 안정성을 해치지 않는 선에서 적당히 형변환이 가능한 기법   👉🏻 안정성 - 의도하지 않은 타입의 객체가 저장되는것을 막는 것. //객체 구현시 타입을 적어서 처리 (안써도 가능)List> list = new ArrayList();int id = 1;String name = "햄버거";int price = 5000;Sale s = new Sale(id, name, price);list.add(s);list.add(new Sale(2, "콜라", ..

백엔드/Java 2024.10.26

Java로 상품 관리 시스템 구현(2)

- 간단한 상품 관리 시스템(키오스크)- menu 1.메뉴추가|2.메뉴삭제|3.메뉴수정(가격수정) 4.메뉴보기(전체메뉴보기)|5.주문|6.주문내역출력(영수증) 7.종료 🔷 구조SaleMenu: 메뉴 항목을 정의SaleOrder: 주문 정보를 담는다.SaleController: 메뉴와 주문을 관리SaleMain: 메인. (시작점)   SaleMenu 클래스는 제품 ID, 제품명, 가격을 속성으로 가지고 있다.package day08;public class SaleMenu {// Menu Class 생성// 제품ID// 제품명// 가격 private int productId; private static int idCnt = 0; private String productName; privat..

백엔드/Java 2024.10.25

Java로 단어장 구현

- 단어장 프로그램 작성 - menu - 1.단어등록|2.단어검색|3.단어수정|4.단어출력|5.단어삭제|6.종료 - WordController 메서드 구현 - map을 이용하여 단어등록 - 기본단어 등록(5가지 등록) - main 에서 메뉴 반복처리- 프로그램 구성  👉🏻 WordMain : 사용자와의 상호작용  👉🏻 WordController : 단어장 데이터 관련 모든 작업 🔷 WordMain 클래스 - 메뉴를 통해 원하는 작업 선택. 각 메뉴에 맞는 메서드를 호출해서 단어장 기능을 실행package day08;import java.util.Scanner;public class WordMain { public static void main(String[] args) { Sc..

백엔드/Java 2024.10.23