분류 전체보기60 도메인 주도설계와 OOP의 관계에 대한 chatGPT와의 질의응답 ❓ 질의JPA 를 통한 개발을 진행하고 있는데 Member 클래스는 MemberRepository랑 MemberService를 이용해서 로직을 만들었다. (join, findById, findAll) 같은 것들을 근데 Item 클래스는 비즈니스 로직이 Item클래스 내부에 있는거 같아 public void addQuantity(int quantity) {this.stockQuantity += quantity} 이렇게 하는게 도메인 주도 설계라는데 왜 이렇게 하는거지? 객체지향하고도 관계가 있나? 도메인 주도 설계와 객체지향 설계1. 왜 비즈니스 로직을 도메인 객체(Item) 내부에 두는가?핵심 이유: 응집성(Cohesion)을 높이고 도메인 객체의 역할을 강화하기 위해객체는 데이터(stockQuan.. JPA 2024. 11. 24. JPA FetchType.EAGER의 N+1 문제 & cascadeType.ALL 사용 이유 & 연관관계 편의 메서드 @ManyToOne(fetch = FetchType.EAGER)와 N+1 문제문제 설명@ManyToOne(fetch = FetchType.EAGER) 설정은 N+1 문제를 유발할 가능성이 높습니다. 예를 들어, 아래와 같은 상황을 가정해보겠습니다.코드 예시@Entitypublic class Order { @Id private Long id; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "member_id") private Member member;} @Entitypublic class Member { @Id private Long id; private String name;} JPQL 예시List .. JPA 2024. 11. 24. 자바 접근제어자 개념과 JPA @Embeddable에서 기본생성자에 proteced를 사용하는 이유 자바 접근 제어자자바에서 접근 제어자(Access Modifier)는 클래스, 메서드, 변수 등의 접근 범위를 결정하여 객체 지향 프로그래밍의 캡슐화(encapsulation)를 구현하는 데 사용됩니다. 자바는 네 가지 접근 제어자를 제공합니다: public, private, protected, 그리고 default(접근 제어자를 명시하지 않을 때).1. public설명: 모든 클래스에서 접근 가능합니다. 패키지 내부 또는 외부 어디서든 해당 멤버에 접근할 수 있습니다.접근 범위:같은 클래스: O같은 패키지: O하위 클래스(다른 패키지): O전체 외부 클래스: O예시:public class MyClass { public int myVariable; public void myMethod() { .. spring 2024. 11. 24. JPA기초 @Entity & @Id & @GeneratedValue & 영속성 컨텍스트 🔥 JPA란 무엇인가? 그리고 @Entity, @Id, @GeneratedValue의 역할JPA란?JPA(Java Persistence API)는 자바 애플리케이션에서 객체(클래스)와 관계형 데이터베이스 간의 매핑을 정의하고 관리하기 위한 표준 인터페이스입니다.역할:객체와 테이블 간의 매핑을 자동으로 처리 (ORM: Object-Relational Mapping).SQL 없이도 데이터베이스와 상호작용 가능.데이터베이스 독립적인 애플리케이션 개발 지원.구현체: Hibernate, EclipseLink, OpenJPA 등이 있으며, JPA는 이 구현체들을 위한 표준입니다.@Entity역할: 클래스가 JPA 엔터티임을 선언합니다. 데이터베이스 테이블과 매핑됩니다.@Entitypublic class User .. spring 2024. 11. 23. [Spring] Spring Bean 과 Servlet에 관한 질의응답 (ChatGPT) 🔥 스프링빈 / 서블릿❓ Question스프링빈과 서블릿은 둘다 객체이지 않나? 둘다 싱글톤이고 그럼 어떤 차이가 있지 📝 Answer스프링 빈(Spring Bean)과 서블릿(Servlet)은 모두 객체이며, 둘 다 일반적으로 싱글톤으로 관리됩니다. 하지만 이 둘 사이에는 몇 가지 중요한 차이점이 있습니다. 주요 차이점은 다음과 같습니다: 1. 역할 및 사용 목적스프링 빈(Spring Bean): 스프링 프레임워크에서 관리되는 객체로, 비즈니스 로직, 서비스, 데이터 접근 등의 다양한 역할을 수행합니다. 스프링 빈은 주로 애플리케이션의 전반적인 기능을 구성하는 데 사용됩니다. 빈은 애플리케이션 컨텍스트(Application Context)에 의해 생성되고 관리됩니다.서블릿(Servlet): 자바 E.. spring 2024. 9. 2. [Java] JDK, JRE, JVM 질의응답 (ChatGPT) 🔥 .java → javac → .class → JVM❓ Question자바 컴파일러에 의해 클래스 파일이 되고 이 클래스 파일을 JVM에서 실행하는거 맞아? 📝 Answer네, 맞습니다! 자바 프로그램이 실행되는 과정은 다음과 같습니다:자바 소스 코드 작성: 개발자는 .java 파일에 자바 코드를 작성합니다.컴파일: 자바 컴파일러(javac)를 사용하여 .java 파일을 컴파일하면 바이트코드가 포함된 .class 파일이 생성됩니다. 이 .class 파일은 JVM이 이해할 수 있는 중간 형태의 코드입니다.실행: 자바 가상 머신(JVM)이 .class 파일을 읽어서 실행합니다. JVM은 바이트코드를 해석하거나 Just-In-Time (JIT) 컴파일러를 사용하여 바이트코드를 네이티브 머신 코드로 변환하.. Java 2024. 8. 31. [Spring] 서블릿 컨테이너와 스프링 컨테이너에 관한 질의응답 (ChatGPT) 🔥 서블릿은 요청시마다 생성되는가?❓ Question여러 클라이언트가 동시에 요청을 한다면 쓰레드 여러 개가 각각 서블릿 객체를 하나씩 생성해서 동시에 service 메소드가 실행되기 때문에 속도가 빠르다.여러 요청이 A서블릿을 요청한다면 A서블릿이 여러개 생성되어 작동하는 것인가? init()이 여러번 호출되는 건가? 📝 Answer아니요, 서블릿(Servlet)은 여러 클라이언트의 요청을 처리할 때 서블릿 인스턴스를 여러 개 생성하지 않습니다. 서블릿 컨테이너(Servlet Container)는 특정 서블릿 클래스에 대해 단일 인스턴스만 생성하고, 이 인스턴스를 여러 클라이언트 요청에 대해 공유합니다. 따라서 다음과 같은 사항을 이해하는 것이 중요합니다:서블릿 인스턴스는 하나만 생성됩니다: 서블릿.. spring 2024. 8. 31. HTTPS란 (SSL / TLS) 📝 HTTPSHTTPS는 HTTP가 전송하는 데이터가 암호화되지 않은 부분을 보완한 프로토콜이다.TLS 계층을 거치는 방식으로 HTTP를 운영하여 HTTP의 전송 메시지 바디(전송되는 데이터가 있는 부분)를 암호화시키는 것이다. HTTPS는 HTTP에 TLS 계층을 더하여 보안을 적용한 것(SSL/TLS 프로토콜과 CA 인증 메커니즘을 통해 보안 : HTTP는 SSL/TLS 인증서를 사용 ❌ HTTPS는 SSL/TLS 인증서를 사용 🙆♀️) 📝 SSL / TLS 프로토콜은 데이터의 암호화처리와 관련이 있다.전송되는 데이터가 민감한 정보일 경우 (ex. 로그인 정보, 개인 식별 정보, 결제 정보, 의료 정보, 금융 정보, 개인 메세지 및 통신 내용, 지리적 위치 정보, 비즈니스 기밀 등등) 그 데이.. infra & network 2024. 8. 11. SOP & CORS란? 📒 동일 출처 정책 (Same-Origin Policy, SOP)브라우저는 기본적으로 SOP 정책을 따르고 있다.SOP는 2011년 RFC 6454에서 등장한 보안 정책으로 "같은 출처에서만 리소스를 공유할 수 있다"라는 규칙을 가진 정책. SOP의 등장배경은 다음과 같다. 1. 보안 강화:XSS (Cross-Site Scripting) 방지: 동일 출처 정책은 악성 스크립트가 사용자 브라우저에서 실행되어 다른 사이트의 데이터를 훔치거나 조작하는 것을 방지.CSRF (Cross-Site Request Forgery) 방지: 동일 출처 정책은 공격자가 사용자의 인증 정보를 이용해 다른 사이트에 무단으로 요청을 보내는 것을 막는다.2. 데이터 보호:웹 애플리케이션은 종종 민감한 데이터를 다룬다. 동일 출처.. infra & network 2024. 7. 31. DFS & BFS 그래프 탐색 방법은 크게 DFS(깊이 우선 탐색)와 BFS(넓이 우선 탐색)이 있다. 그래프(Graph)란 Node(정점)와 Edge(간선)로 이뤄진 자료구조이며 Node(정점)들은 Edge(간선)로 이어져있다.그래프를 탐색한다는 건 한 노드를 시작으로 간선을 통해 모든 노드들을 한번씩 방문하는 것을 의미한다. 1. DFS (Depth-First Search) : 일단 최대한 깊게 탐색 후 옆으로 탐색루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법 (자식들을 우선적으로 탐색하는 방법)스택 또는 재귀함수로 구현 (자기 자신을 호출하는 순환 알고리즘의 형태 를 가지고 있다)한 노드에서 제일 마지막 자식까지 탐색하고 돌아오는 과정을 .. Algorithm & Data Structure 2024. 7. 14. [Java] HashMap 이해하기 MapMap 자료구조의 특징은 키(Key)와 값(Value)이다.키를 통하여 값에 접근할 수 있는 구조이다. List나 배열은 인덱스로 접근한다. 인덱스는 단순히 순서만 나타낸다. 그러나 Map의 키는 개발자가 의미를 부여할 수 있다. HashMapJAVA에서 Map은 인터페이스이며, Map의 구현체 중 하나가 HashMap 데이터를 저장하려면 자료구조가 필요하다. HashMap은 자료구조로 배열(array)을 사용한다. 배열은 '인덱스'를 통해 바로 접근이 가능하다는 장점이 있다. HashMap은 해싱(Hashing)을 통해 Map 데이터가 저장 될 위치의 인덱스를 구한다. 그래서 이름이 HashMap이다. key(X)를 해싱함수(function)에 넣어 인덱스(Y)를 산출한 후, 해당 인덱스에 Map.. 카테고리 없음 2024. 7. 14. 외부 API 통신 이후 JSESSIONID 가 변경되어 발생한 문제 운영상의 자바 클래스 파일을 교체한 이후에 예상치 못한 에러가 발생했다.회원가입 페이지에서 이메일 중복체크 버튼을 누르면 aJax 통신을 통해 중복여부 확인 이후 alert창을 띄워주게 되어 있는데이 기능이 외부 API인 주소검색 API 통신을 하고 난 이후에는 정상적으로 동작하지 않았다. 게다가 결제 기능까지 동작하지 않았다. 개발자도구를 열어 이메일 중복체크 버튼을 눌러보았는데 누를때마다 JSON.parse할 때 JSON이 아닌 HTML 파일을 줬기 때문에 오류가 발생한 것이라는 에러 메세지를 볼 수 있었다. 개발자 도구의 application의 쿠키를 열어 보았고 JSESSIONID가 외부 API 통신 (주소검색 API) 이후 변경된 것을 확인할 수 있었고 바뀐 JSESSIONID로 aJax통신을 .. spring 2024. 6. 23. 이전 1 2 3 4 5 다음