java
-
오늘은 JAVA의 데이터 종류에 대해서 이야기 해보려고 한다. c#의 데이터 종류 라는 예전 글을 먼저 공유한다.https://dogfootsleep.tistory.com/17 c#의 데이터 종류데이터의 형식은 기본 데이터 형식과 복합 데이터 형식으로 나뉜다. 복합 데이터 형식은 구조체와 클래스, 배열 등이 있는데 이 부분은 나중에 배웁니다. 그렇다면 기본 데이터 형식에 대해 알dogfootsleep.tistory.com 우리는 데이터는 0과 1로 움직인다고 공부했다.그러나 0과 1은 컴퓨터의 데이터이며 우리가 고급 레벨의 언어로 이야기 하려면 다양한 데이터의 체계가 필요하다.예를 들어 문자와 같은 데이터도 존재하며, 숫자와 같은 데이터도 필요하다. 그래서 자바는 여러가지 데이터 타입을 지원해준다. 우리..
JAVA의 데이터 종류오늘은 JAVA의 데이터 종류에 대해서 이야기 해보려고 한다. c#의 데이터 종류 라는 예전 글을 먼저 공유한다.https://dogfootsleep.tistory.com/17 c#의 데이터 종류데이터의 형식은 기본 데이터 형식과 복합 데이터 형식으로 나뉜다. 복합 데이터 형식은 구조체와 클래스, 배열 등이 있는데 이 부분은 나중에 배웁니다. 그렇다면 기본 데이터 형식에 대해 알dogfootsleep.tistory.com 우리는 데이터는 0과 1로 움직인다고 공부했다.그러나 0과 1은 컴퓨터의 데이터이며 우리가 고급 레벨의 언어로 이야기 하려면 다양한 데이터의 체계가 필요하다.예를 들어 문자와 같은 데이터도 존재하며, 숫자와 같은 데이터도 필요하다. 그래서 자바는 여러가지 데이터 타입을 지원해준다. 우리..
2024.11.01 -
우리는 객체지향언어를 공부합니다. 그럼 객체지향이란 무엇일까요? 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 데이터와 그 데이터를 조작하는 함수를 하나의 객체로 묶어 사용하는 프로그래밍 패러다임입니다. 이 패러다임은 실제 세상에 존재하는 개체를 소프트웨어 내에서 모델링하는 데 중점을 둡니다. 객체 지향 프로그래밍은 코드의 재사용성과 확장성을 높여주고, 유지보수를 쉽게 해주는 특징을 가지고 있습니다.객체 지향 프로그래밍의 핵심 개념클래스(Class)클래스는 객체를 정의하는 틀 또는 설계도입니다. 클래스는 속성(데이터)과 메서드(함수)를 정의하여 객체가 어떤 특성과 행동을 가지는지 결정합니다.객체(Object)객체는 클래스를 기반으로 생성된 인스턴스(instance)로..
뻘짓 하며 얻은 기본기 9 객체지향프로그래밍의 특징 OOP우리는 객체지향언어를 공부합니다. 그럼 객체지향이란 무엇일까요? 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 데이터와 그 데이터를 조작하는 함수를 하나의 객체로 묶어 사용하는 프로그래밍 패러다임입니다. 이 패러다임은 실제 세상에 존재하는 개체를 소프트웨어 내에서 모델링하는 데 중점을 둡니다. 객체 지향 프로그래밍은 코드의 재사용성과 확장성을 높여주고, 유지보수를 쉽게 해주는 특징을 가지고 있습니다.객체 지향 프로그래밍의 핵심 개념클래스(Class)클래스는 객체를 정의하는 틀 또는 설계도입니다. 클래스는 속성(데이터)과 메서드(함수)를 정의하여 객체가 어떤 특성과 행동을 가지는지 결정합니다.객체(Object)객체는 클래스를 기반으로 생성된 인스턴스(instance)로..
2024.10.30 -
JoinColumn이란 JoinColumn이란 엔티티 간의 관계를 매핑할 때 사용하는 어노테이션이다. 관계가 외래키 (foreign key)로 묶여있는 엔티티 간의 참조 관계를 나타내준다. 여기에서 각 테이블은 연관 관계를 맺고 테이블은 외래 키로 묶이면서 한 쪽이 연관 관계의 주인이 된다.우선 연관 관계의 주인이라는 것에 대해서 알아야 한다. 연관 관계의 주인이란? 연관 관계의 주인이란 JPA같은 ORM에서 사용하는 개념으로, 외래키로 묶인 엔티티들 중 외래키를 관리 할 책임이 있는 엔티티를 의미한다. 일반적으로 외래 키를 맺는 엔티티는 다대일, 일대일 관계를 맺게 되는데 일대일의 관계를 제외하고 다대일에선 무조건 ‘다'쪽의 엔티티가 외래 키를 가지게 된다. 이는 RDB의 설계 원칙 상 컬랙션을 담을 ..
JAVA N+1에 대하여 - JoinColumn 과 연관 관계의 주인이란? (2) -어려움JoinColumn이란 JoinColumn이란 엔티티 간의 관계를 매핑할 때 사용하는 어노테이션이다. 관계가 외래키 (foreign key)로 묶여있는 엔티티 간의 참조 관계를 나타내준다. 여기에서 각 테이블은 연관 관계를 맺고 테이블은 외래 키로 묶이면서 한 쪽이 연관 관계의 주인이 된다.우선 연관 관계의 주인이라는 것에 대해서 알아야 한다. 연관 관계의 주인이란? 연관 관계의 주인이란 JPA같은 ORM에서 사용하는 개념으로, 외래키로 묶인 엔티티들 중 외래키를 관리 할 책임이 있는 엔티티를 의미한다. 일반적으로 외래 키를 맺는 엔티티는 다대일, 일대일 관계를 맺게 되는데 일대일의 관계를 제외하고 다대일에선 무조건 ‘다'쪽의 엔티티가 외래 키를 가지게 된다. 이는 RDB의 설계 원칙 상 컬랙션을 담을 ..
2024.10.30 -
N+1의 해결 방법 N+1 문제를 설명하면서 왜 길게 JoinColumn을 설명했냐 하면 이러한 객체 참조를 이용할 때 많이 나타날 수 있기 때문이다. 물론 JPA를 사용하지 않아도 발생할 수 있지만 비슷한 ORM을 사용할 때 많이 발생하고 해결해야 하기에 JoinColumn 먼저 설명하였다.이론상 Contest에서 participants를 일대다로 JoinColumn 하고 Lazyloading을 썼다면 , Contest만 조회를 하면 participants는 조회를 하지 않아야 한다. 그러나 문제는 Entity를 View로 전환 하는 과정이다. API에서 Entity를 그대로 내보내면 최종 Return 객체 값을 Json 형태로 바꿔준다. @GetMapping("/contests") publ..
JAVA N+1에 대하여 - 해결 방법 (3) - 어려움N+1의 해결 방법 N+1 문제를 설명하면서 왜 길게 JoinColumn을 설명했냐 하면 이러한 객체 참조를 이용할 때 많이 나타날 수 있기 때문이다. 물론 JPA를 사용하지 않아도 발생할 수 있지만 비슷한 ORM을 사용할 때 많이 발생하고 해결해야 하기에 JoinColumn 먼저 설명하였다.이론상 Contest에서 participants를 일대다로 JoinColumn 하고 Lazyloading을 썼다면 , Contest만 조회를 하면 participants는 조회를 하지 않아야 한다. 그러나 문제는 Entity를 View로 전환 하는 과정이다. API에서 Entity를 그대로 내보내면 최종 Return 객체 값을 Json 형태로 바꿔준다. @GetMapping("/contests") publ..
2024.10.30 -
1. N+1이란 무엇인가. ORM을 사용하여 DB와 상호작용을 할 때 발생하는 성능 이슈 중 하나이다. DB에 있는 데이터을 엔티티로 로드하는 과정에서 연관 엔티티를 어떻게 로드 할 것인가에서 나오는 문제이다.ORM의 영속성 컨텍스트(persistence context)는 db의 데이터를 객체로 변환하여 영속성을 가질 수 있는 환경을 만들어 주는데데이터의 영속성이라함은 애플리케이션의 실행 상태나 데이터를 영구적으로 저장하여, 프로그램이 종료된 후에도 사라지지 않고 유지되는 데이터의 특성을 말한다. 즉, 데이터를 영구적인 저장소로 저장하여 데이터가 지속될 수 있게 하는 것이다. 이는 컴퓨터가 재시작되어도 데이터를 보존하고 재사용을 가능하게 한다.이런 데이터를 DB 밖에서 영속성을 유지한 상태로 객체화 시켜..
JAVA N+1에 대하여 - N+1이란? (1) -어려움1. N+1이란 무엇인가. ORM을 사용하여 DB와 상호작용을 할 때 발생하는 성능 이슈 중 하나이다. DB에 있는 데이터을 엔티티로 로드하는 과정에서 연관 엔티티를 어떻게 로드 할 것인가에서 나오는 문제이다.ORM의 영속성 컨텍스트(persistence context)는 db의 데이터를 객체로 변환하여 영속성을 가질 수 있는 환경을 만들어 주는데데이터의 영속성이라함은 애플리케이션의 실행 상태나 데이터를 영구적으로 저장하여, 프로그램이 종료된 후에도 사라지지 않고 유지되는 데이터의 특성을 말한다. 즉, 데이터를 영구적인 저장소로 저장하여 데이터가 지속될 수 있게 하는 것이다. 이는 컴퓨터가 재시작되어도 데이터를 보존하고 재사용을 가능하게 한다.이런 데이터를 DB 밖에서 영속성을 유지한 상태로 객체화 시켜..
2024.10.30 -
기본:: 필자의 주력언어는 현재 c# 이지만 과거에는 Java였다. 일본에 팔려가면서 부득이하게 .Net 프레임워크로 시작하였고 어플리케이션 개발을 배웠다. 그리고 새로운언어를 시작한다는 것에 막연한 두려움이 있었다.그러나 Java와 C#은 매우 비슷한 언어이다. c#은 2000년대 초에 발표가 되었고 네트워크나 웹 서비스 개발을 중점으로 만들어지고 설게되었다. java와 C++에 영향 받았다는 것으로 알려져 있으며 현재 대표적인 객체 지향 프로그래밍 언어 중 하나이다. 일단 두 언어에 대해서 무엇이 차이가 있는지 알기 전에 어떤 철학으로 두 언어가 나왔는 지를 알아보야 한다.JavaWrite Once, Run Anywhere 이란 철학을 기반으로 어느 하드웨어(다양한 플랫폼)에서도 동작할 수 있기 위..
.Net(c#) vs Spring(Java) 에 대하여 -보통기본:: 필자의 주력언어는 현재 c# 이지만 과거에는 Java였다. 일본에 팔려가면서 부득이하게 .Net 프레임워크로 시작하였고 어플리케이션 개발을 배웠다. 그리고 새로운언어를 시작한다는 것에 막연한 두려움이 있었다.그러나 Java와 C#은 매우 비슷한 언어이다. c#은 2000년대 초에 발표가 되었고 네트워크나 웹 서비스 개발을 중점으로 만들어지고 설게되었다. java와 C++에 영향 받았다는 것으로 알려져 있으며 현재 대표적인 객체 지향 프로그래밍 언어 중 하나이다. 일단 두 언어에 대해서 무엇이 차이가 있는지 알기 전에 어떤 철학으로 두 언어가 나왔는 지를 알아보야 한다.JavaWrite Once, Run Anywhere 이란 철학을 기반으로 어느 하드웨어(다양한 플랫폼)에서도 동작할 수 있기 위..
2023.12.04