1. NativeQuery
NativeQuery는 JPA에서 제공하는 기능으로, 데이터베이스의 고유한 SQL을 직접 사용할 수 있게 해 준다.
JPQL이나 Criteria API로 표현하기 어려운 복잡한 쿼리나 데이터베이스 특정 기능을 사용해야 할 때 유용하다.
NativeQuery를 사용하면 데이터베이스의 최적화된 쿼리를 그대로 사용할 수 있어 성능 향상을 꾀할 수 있다.
하지만 데이터베이스의 종속적인 쿼리를 작성하게 되므로, 데이터베이스를 변경할 경우 쿼리도 함께 수정해야
할 수 있다는 단점이 있다. NativeQuery는 EntityManager의 createNativeQuery() 메소드를 통해 생성할 수
있으며, 결과를 엔티티나 스칼라 값으로 매핑할 수 있다.
💡 주요 특징
- 데이터베이스 고유의 SQL을 사용 가능하다.
- 복잡한 쿼리나 특정 데이터베이스 기능을 활용 가능하다.
- 성능 최적화에 유용하다.
- 데이터베이스 종속성이 발생한다.
💻 NativeQuery 사용 예시 코드
@PersistenceContext
private EntityManager entityManager;
public List<User> findUsersByNativeQuery(String name) {
String sql = "SELECT * FROM users WHERE name LIKE ?";
Query query = entityManager.createNativeQuery(sql, User.class);
query.setParameter(1, "%" + name + "%");
return query.getResultList();
}
public int updateUserStatusByNativeQuery(String status, Long id) {
String sql = "UPDATE users SET status = ? WHERE id = ?";
Query query = entityManager.createNativeQuery(sql);
query.setParameter(1, status);
query.setParameter(2, id);
return query.executeUpdate();
}
@Query,NativeQuery
Java에서 @Query는 데이터베이스에서 실행할 사용자 지정 SQL 쿼리를 지정하기 위해 Spring Data JPA에서 사용되는 어노테이션 입니다.@Query를 사용할 때 개발자는 SQL 쿼리를 문자열 값으로 지정할 수 있
velog.io
- 참고 : oxix.log
[Spring Data JPA] JPQL 사용 방법(@Query & nativeQuery & DTO Mapping & function)
JPA Query Method만을 이용해서 작성할 수 없는 SQL를 정의하기 위한 JPQL에 대한 내용을 다루고있습니다.
velog.io
- 참고 : YouMakeMeSmile.log
2. @RequestParam
@RequestParam은 Spring MVC 프레임워크에서 HTTP 요청의 파라미터 값을 컨트롤러의 메소드 인자와
바인딩하는 데 사용되는 어노테이션이다. 주로 GET요청의 쿼리 문자열 파라미터나 POST 요청의 폼 데이터를
처리할 때 활용된다. 이 어노테이션을 사용하면 HTTP 요청으로 전달된 파라미터를 쉽게 추출하고 타입을 변환
할 수 있어, 컨트롤러 메소드에서 바로 사용할 수 있는 형태로 준비된다.
@RequestParam은 필수 파라미터와 선택적 파라미터를 구분할 수 있으며, 기본값을 설정할 수도 있어 유연한
파라미터 처리가 가능하다. 또한, 복잡한 객체로의 바인딩이 필요한 경우가 아니라면 @ModelAttribute 보다 간단
하고 직관적으로 사용할 수 있는 장점이 있다.
💡 주요 속성
- value
파라미터 이름 지정 - required
필수 여부 (기본값 : true) - defaultValue
파라미터가 없을 때 사용할 기본값
💻 사용 예시 코드
@GetMapping("/users")
public String listUsers(
@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "size", defaultValue = "10") int size,
@RequestParam(required = false) String sortBy,
Model model
) {
// 메서드 구현
}
🌱 @RequestParam 개념 정리
@RequestParam 스프링이 제공하는 어노테이션으로, 이를 사용하면 요청 파라미터를 매우 편리하게 사용할 수 있다 @ResponseBody @RequestMapping("/request-param") public String requestParamV2( @RequestParam("username") Strin
yummy0102.tistory.com
- 참고 : yummy0102
3. Java Script CommonJS와 ES6 문법 차이
JavaScript의 모듈 시스템은 코드를 구조화하고 재사용성을 높이는 데 중요한 역할을 한다.
CommonJS와 ES6는 각각 다른 환경과 시기에 개발된 모듈 시스템으로, 문법과 사용 방식에 차이가 있다.
CommonJS는 주로 서버 사이드 JavaScript 환경인 Node.js에서 사용되었으며, 동기적으로 모듈을 불러오는 방식을 채택하고 있다. 반면 ES6 모듈 시스템은 ECMAScript 2015(ES6)에서 도입된 표준으로, 브라우저 환경을 포함한 모든 JavaScript 환경에서 사용할 수 있도록 설계되었다. ES6 모듈은 정적 구조를 가지고 있어 컴파일 시간에 의존성을 분석할 수 있으며, 비동기적으로 모듈을 불러올 수 있는 장점이 있다.
1️⃣ CommonJS
- Node.js에서 주로 사용
- require() 함수로 모듈 가져오기
- module.exports로 모듈 내보내기
2️⃣ ES6
- 브라우저와 최신 Node.js에서 사용
- import 문으로 모듈 가져오기
- export 문으로 모듈 내보내기
💻 예시 코드(CommonJS, ES6 )
// 모듈 내보내기
module.exports = {
func1: function() {},
func2: function() {}
};
// 모듈 가져오기
const myModule = require('./myModule');
// 모듈 내보내기
export function func1() {}
export function func2() {}
// 모듈 가져오기
import { func1, func2 } from './myModule';
자바스크립트 ES6 , CommonJS 문법, 모듈시스템 차이
nodejs의 장점은 모듈시스템입니다. 모듈시스템을 구성하는 방법은 node에서는 단순하게 ES6식, CommonJS식 모듈시스템 2개가 있습니다. 오늘은 ES6, CommonJS 뭐가 다른지 어떨 때 무엇을 쓰는게 현명한
commnetall.tistory.com
- 참고 : commnetall
4. H2 Database
H2 Database는 Java로 작성된 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)이다.
주로 개발 및 테스트 환경에서 사용되며, 가볍고 빠른 성능을 제공하는 것이 특징이다.
H2는 인메모리 모드와 파일 기반 모드를 모두 지원하여, 애플리케이션의 요구사항에 따라 유연하게 사용할 수 있다.
특히 인메모리 모드에서는 데이터를 메모리에 저장하기 때문에 매우 빠른 읽기와 쓰기 성능을 제공한다.
H2는 JDBC API를 완전히 지원하며, SQL 표준을 대부분 준수하고 있어 다른 데이터베이스 시스템과의 호환성도
뛰어나다. 또한 웹 콘솔을 통해 데이터베이스를 쉽게 관리할 수 있는 기능을 제공하여 개발자의 편의성이 높다.
💡 주요 특징
- 경량화 및 빠른 속도
- 내장 및 서버 모드 지원
- 브라우저 기반 콘솔 제공
- JDBC API 지원
💻 Spring Boot에서 H2 사용 예시
spring:
datasource:
url: jdbc:h2:mem:testdb
driver-class-name: org.h2.Driver
username: sa
password:
h2:
console:
enabled: true
H2 Database 란? 그리고 사용법?
H2 Database 란? H2는 자바로 작성된 관계형 데이터베이스 관리 시스템이다. 장점 따로 설치가 필요없다 용량이 매우 가볍다 웹용 콘솔(쿼리툴) 제공하여 개발용 로컬DB로 사용 용이 특징 JAVA로 작성
yjkim-dev.tistory.com
- 참고: yjkim-dev
H2 DB 개념 및 사용 방법에 대해 알아봅시다.
오늘은 백엔드 개발자라면 꼭 알아야 할 관계형 데이터 베이스 관리 시스템(RDBMS)인 H2 DB에 대해 알아보려고 합니다. 🤔
velog.io
- 참고 : choidongkuen.log
5. Oracle EMP테이블
Oracle 데이터베이스의 샘플 스키마 중 하나로, 직원 정보를 저장하는 데 사용되는 대표적인 예제 테이블이다.
이 테이블은 데이터베이스 학습과 SQL 쿼리 연습에 자주 활용되며, 기본적인 관계형 데이터베이스 구조를 이해하는 데 도움이 된다. EMP 테이블은 일반적으로 DEPT(부서) 테이블과 함께 사용되어 기본적인 관계형 모델을 구성한다.
이 테이블은 직원 번호, 이름, 직무, 관리자, 고용일, 급여, 수당, 부서 번호 등의 정보를 포함하고 있어, 다양한 SQL 쿼리와 데이터 분석 시나리오를 연습하는 데 적합하다.
💡 주요 컬럼
컬럼 | 설명 |
EMPNO | 직원 번호 (기본 키) |
ENAME | 직원 이름 |
JOB | 직무 |
MGR | 관리자 직원 번호 |
HIREDATE | 고용일 |
SAL | 급여 |
COMM | 수당 |
DEPTNO | 부서 번호 |
💻 테이블 생선 SQL 예시 코드
CREATE TABLE EMP (
EMPNO NUMBER(4) PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2)
);
[ORACLE] emp, dept 테이블 생성 스크립트
오라클 테스트시 많이 사용되는 emp, dept 테이블의 스크립트입니다. scoot계정에 기본으로 되어있지 않은 경우 아래 스크립트를 이용해서 생성하시면 됩니다. CREATE TABLE DEPT (DEPTNO number(10), DNAME VARCH
java7.tistory.com
- 참고 : java7
6. Reflection API란
실행 중인 Java 프로그램이 자신의 구조와 동작을 검사하고 수정할 수 있게 해주는 강력한 기능이다.
이 API를 사용하면 프로그램이 실행 시간에 클래스, 인터페이스, 필드, 메서드의 정보를 얻을 수 있으며, 심지어
새로운 인스턴스를 생성하거나 메서드를 호출할 수도 있다. Reflection은 주로 프레임워크나 라이브러리 개발,
디버깅 도구 제작, 테스트 도구 개발 등에 사용된다. 이 기능을 통해 개발자는 컴파일 시간에 알 수 없는 클래스를
다룰 수 있게 되어, 동적이고 유연한 프로그램을 작성할 수 있다. 그러나 Reflection의 사용은 일반적인 메서드
호출보다 성능이 떨어지고, 보안 제약을 우회할 수 있기 때문에 신중하게 사용해야 한다.
💡 주요 기능
- 클래스의 메소드, 필드, 생성자 정보 조회
- 객체 생성 및 메소드 호출
- 필드값 조회 및 수정
💻 사용 예시 코드
Class<?> clazz = Class.forName("com.example.MyClass");
Object instance = clazz.getDeclaredConstructor().newInstance();
Method method = clazz.getDeclaredMethod("myMethod", String.class);
method.invoke(instance, "Hello, Reflection!");
☕ 누구나 쉽게 배우는 Reflection API 사용법
자바의 Class 클래스 (Java.lang.Class) 자바 프로그래밍을 할때 우리는 보통 변수나 클래스를 직접 선언하고 만들어 사용하여 왔다. 그런데 어떤 경우에는 애플리케이션 실행 중에서 클래스를 동적으
inpa.tistory.com
- 참고 : inpa
[JAVA] Reflection API: 개념, 사용법, 예시 코드
💋 인트로 안녕하세요. 우아한테크코스 5기 깃짱이라고 합니다. 이번 포스팅에서는, JAVA Reflectoin API에 대해서 알아보려고 한다. 개인적으로 공부하기 전에는 한없이 어렵게 느껴졌고, 개념이 뭔
engineerinsight.tistory.com
- 참고 : engineerinsight
'에이콘아카데미 회고 > 5회차) 자바기반 풀스택 개발자 양성과정' 카테고리의 다른 글
Spring, Spring Boot) 66번째 회고 (0) | 2024.07.25 |
---|---|
Spring, Spring Boot) 65번째 회고 (0) | 2024.07.24 |
Spring, Spring Boot) 63번째 회고 (0) | 2024.07.18 |
Spring, Spring Boot) 62번째 회고 (0) | 2024.07.17 |
Spring, Spring Boot) 61번째 회고 (0) | 2024.07.16 |