일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- @IdClass
- json gson 차이
- 1차캐시
- json
- git
- 스프링부트오류
- Filter
- 스프링 부트 기능
- JPA
- github
- jpa에러
- uncheck Exception
- Error creating bean with name
- spring서버
- REST API 규칙
- 복합키
- jpa회원가입
- JoinColumn
- REST란
- queryDSL
- jwt메서드
- 인텔리제이
- 최종 프로젝트
- ERD 작성
- 빈생성안됨
- JPA주의사항
- 스프링 부트 공식 문서
- Spring Spring boot 차이
- Q 클래스
- Unsatisfied dependency
- Today
- Total
목록나의 호기심 (14)
Everyday Dev System

MariaDB는 MySQL에서 파생되었다. 먼저, MySQL은 AB사에서 제작한 SW 입니다. Oracle이 이를 인수하며 상업을 목적으로 이용할 경우에 유료화를 시켰습니다. 이러한 정책에 반발한 AB사의 핵심 창업자 중 한 명이였던 "몬티 와이드니어스"가 MySQL 코드 기반으로 한 오픈소스 RDBMS를 개발한 것이 현재의 Maria DB 입니다. 오픈소스와 친숙한 Linux 에서는 MySQL 대신 MariaDB를 표준으로 채택하여 활용합니다. 모든 기능 무료로 활용 가능 MySQL은 Community 버전도 교육, 개발용으로 활용 가능하나 성능에 한계가 있습니다. 그렇지만, MariaDB는 제약없이 모든 기능을 무료로 사용할 수 있습니다. MySQL 코드 기반 오픈 소스 명령어, 사용 방법, 구조가 ..
JNI에 대한 설명을 다음 글을 참고 하면 된다. 2023.09.30 - [나의 호기심] - JNI란? 아래는 JNI를 이용하는 자바 프로그램 코드이다. public class JNIExample { static { System.loadLibrary("MyJNILibrary"); } private native int getNumber(); private native void printHelloWorld(); public static void main(String[] args){ JNIExample jni = new JNIExample(); jni.printHelloWorld(); System.out.println(jni.getNumber()); } } System.loadLibrary("MyJNILibr..

InterCeptor란? Interceptor 활용하기 먼저, Interceptor가 무엇인지 알아야 합니다. 1. 인터셉터란? 컨트롤러와 핸들러를 호출하기 전과 후에 요청과 응답을 참조하거나 가공하는 역할을 합니다. '낚아채다' 라는 의미로, 사용자 요청에 의해 서버에 들어온 Request 객체를 컨트롤러의 핸들러로 도달하기 전에 낚아채서 개발자가 원하는 추가 작업을 한 후 핸들러로 보낼 수 있도록 돕습니다. 예로 로그인체크 혹은 권한 체크 등을 할 수 있습니다. 특정 컨트롤러 url에 매핑되어 인터센터를 지정할 수 있습니다. 또한, 장점으로는 여러 url에 컨트롤러 접근 이전에 전처리가 필요할 경우에 코드의 중복을 최소화할 수 있습니다. 2. 인터셉터 활용 예제 간단한 예시를 아래를 통해 보도록 하겠..
System.arraycopy 메서드에서 native를 명시한 이유가 무엇일까? @IntrinsicCandidate public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length); 위의 코드는 System 클래스의 코드 일부를 발췌한 것이다. System.arraycopy 메서드는 저수준 메모리 작업 필요하여 순수 java 코드로 수행이 힘들다. 그 이유는 다음과 같다. 1. 배열 복사 작업: System.arraycopy 메서드는 배열의 요소를 다른 배열로 복사하는 작업을 수행한다. 이 때, 배열은 메모리 상에 연속적으로 저장되어 있으며, 배열의 각 요소는 메모리의 연속된 위치에 저장된다. ..

자바에서 Arrays 클래스 코드들을 뜯어보다가 처음보는 것을 발견해서 찾아보았다. native 란 ? JNI란? import java.util.Arrays; public class test { public static void main(String[] args) { int[] arr = {0,1,2,3,4}; System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr)); System.out.println(); // copyOf int[] arr2 = Arrays.copyOf(arr, arr.length); System.out.println("Arrays.toString(arr2) = " + Arrays.toString(arr2)); int[..

Exception에 대해서 자세히 살펴보겠습니다. Exception 아래 사진을 보면 Throwable 클래스를 상속한 Exception 과 Error 클래스가 있습니다. 아래는 Exception 을 상속한 RuntimeException 입니다. 여기서 쓰인 주석 @jls 11.2 Compile-Time Checking of Exceptions 는 RuntimeException 클래스가 자바 언어 명세(JLS)의 11.2 섹션인 "Compile-Time Checking of Exceptions"과 관련이 있다는 의미입니다. 즉, 해당 클래스가 예외 처리에 관련된 규칙과 관련된 부분을 구현하거나 설명한다는 것을 나타냅니다. JLS는 JDK 버전과 1:1 매칭이 되므로 해당 build.gradle 혹은 po..

chat GPT에도 물어보고 해당 경로로 가서 봤지만, 찾지 못했다. 결국 파일 디렉터리 하나하나 들어가서 찾아보았다. build 폴더도 아닌! out 폴더 내에 있었다. 여기서 궁금한 점이 생겼다. 위에 클래스는 MentionId 라는 클래스로, Mention 엔티티의 복합키를 설정하기 위한 파일이다. 임베디드 클래스는 JPA에서 다른 엔티티 클래스에 포함되는 복합 속성을 나타내는 클래스로, 데이터베이스에 별도의 테이블로 매핑되지 않고, 그를 포함하는 Mention 엔티티 클래스의 컬럼으로 매핑된다. 그런데, 왜 Q클래스가 생성이 되었을까? @Entity 어노테이션이 기재된 클래스만 생성되는 것이 아니였나? MentionId 클래스는 @Embeddable 어노테이션이 붙은 클래스이기 때문에 임베디드(e..
먼저 로드 밸런서는 종류가 다양하다. 다양한 만큼 사용의 이점을 이해하고 있을 경우 AWS를 사용하는데에 도움이 된다. 먼저 ALB와 ELB의 차이를 살펴보자 ALB 애플리케이션 로드 밸런서의 약자, 웹 서비스에 걸리는 부하를 분산해주는 역할을 한다. 트래픽 증가는 웹 서비스의 속도 저하와 에러 발생의 주 원인이 된다. ALB와 같은 로드밸런서는 이러한 웹 서비스의 부하를 줄여 안정성, 고가용성을 높여준다. 즉, 서버에 가해지는 트래픽을 여러대의 서버에 균등하게 분산시켜주는 역할을 하는 것이 로드 밸런서이다. 서버의 인스턴스 성능을 향상시키는 Scale-Up 과 서버를 여러 대로 나눠서 트래픽을 처리하는 Scale-out 방이 있다. 비용 절감 고가용성 지원 무중단 서비스 제공 사용자 인증등의 보안 향상..

1. Spring Data JPA JPA를 쓰기 편하게 만들어놓은 모듈이다. → 위와 같이 Repository 인터페이스가 Spring Data JPA 내부에 존재한다. 위와 같이 JpaRepository는 ListCrudRepository를 상속하고, ListCrudRepository는 CrudRepository를 상속하고, CrudRepository는 Repository를 상속한다. 상속 관계 : Repository > CrudRepository > ListCrudRepository > JpaRepository 예를 들어, Repository 인터페이스의 기본 구현체인 SimpleJpaRepository의 코드를 보자. SimpleJpaRepository는 JpaRepositoryImplementat..

All persistent classes must have a default constructor (which can be non-public) so that Hibernate can instantiate them using Constructor.newInstance(). It is recommended that you have a default constructor with at least package visibility for runtime proxy generation in Hibernate. 한번 빈 생성자를 없애고 실행해봤다. 역시나 안됐다! JPA(Java Persistence API)에서 @Entity 어노테이션을 사용하여 엔티티 클래스를 정의할 때, 기본 생성자(빈 생성자)가 꼭 필요한 ..