본문 바로가기

전체 글

[JDBC] JPA(Java Persistence API) 왜 사용할까? 목차개요ORMEntityPersistence Context(영속성 컨텍스트)Repository한계점 개요JDBC를 더 쉽게 사용하기 위한 JDBC Template은 Query의 결과를 객체로 변환해주는 Mapper를 사용할 수 있습니다. 이 Mapper는 DB 의존성 및 중복 쿼리 문제점이 있습니다. 또한 JDBC Template의 다음과 같은 문제점이 있습니다.문제설명해결 방법상속의 문제RDB는 객체의 상속 관계를 표현할 수 없습니다.@OneToMany, @ManyToOne관계 문제RDB는 객체의 참조 관계 방향을 표현할 수 없습니다.@JoinColumn, @MappedBy탐색 문제RDB는 객체처럼 참조를 따라 순차적으로 탐색할 수 없습니다.@FetchType, fetchJoin()밀도 문제RDB는 .. 더보기
[JDBC] JDBC Template 목차개요JDBC Template 개요⭐ JDBC Template을 알아보기 전, 왜 필요하게 되었는지 간단하게 알아보겠습니다. JDBC Template을 사용하기 전에는 개발자들이 직접 JDBC를 통하여, SQL문을 작성하였습니다. JDBC로 직접 SQL문을 작성했을 때, 다음과 같은 문제가 발생하였습니다. 중복되고 반복적인 SQL 코드 비즈니스 로직과 SQL이 혼재되어 코드의 가독성과 유지보수성이 저하됩니다. (관심사의 분리가 잘 안됩니다.)객체 매핑의 불편함과 타입 오류 가능성`ResultSet`을 수동으로 읽어 객체에 매핑해야 합니다.예: `resultSet.getInt("age")` 에서처럼 수동으로 `age`가 null이면 `NullPointerException`이 발생할 수도 있습니다.컴파일.. 더보기
[JDBC] Query 요청을 위한 Statement vs PreparedStatement 목차개요StatementPreparedStatement 개요💡 JDBC DriverManager를 통해 적절한 드라이버를 찾아 데이터베이스와 연결하고, 연결이 완료되면 `Connection` 객체를 반환받습니다.이 `Connection` 객체를 통해 `Statement` 또는 `PreparedStatement`를 생성하여 SQL 쿼리를 실행할 수 있습니다.`Statement`는 정적인 SQL을 문자열로 직접 실행할 때 사용하고,`PreparedStatement`는 파라미터를 바인딩할 수 있어 보안과 성능 면에서 더 우수합니다. Statement정의정적 SQL 문을 실행하고 그 실행 결과를 반환하는데 사용되는 인터페이스입니다. 특징기본적으로 하나의 `Statement` 객체당 단 하나의 `Result.. 더보기
[JDBC] JDBC Driver 한 방 정리 목차JDBCJDBC DriverDriver 동작 방식 JDBC정의JDBC(Java Database Connectivity)는 자바 애플리케이션에서 데이터베이스에 접근할 수 있도록 하는 API입니다. JDBC 드라이버는 이 API를 구현하여, 자바 애플리케이션과 특정 데이터베이스 간의 연결을 가능하게 합니다. 타입Type 1 : JDBC-ODBC Bridge DriverType 2 : Native API, Partly Java DriverType 3 : Net Protocol, Pure Java DriverType 4 : Native Protocol, Pure Java Driver데이터베이스의 네이티브 프로토콜을 사용하여 직접 데이터베이스에 접근합니다.순수 Java로 구현되어 드라이버가 플랫폼에 종속되지.. 더보기
[Spring boot] DB(H2)의 세가지 사용 방식 목차H2 데이터 베이스3가지 방식정리하기 H2 데이터 베이스정의자바로 작성된 경량화된 오픈 소스 관계형 데이터 베이스 관리 시스템입니다. 특징H2는 자바로 작성되어 있어 Java 애플리케이션에 쉽게 임베드 할 수 있습니다.용량이 작아, 주로 개발 및 테스트 환경에서 사용되며, 별도의 설치 없이 사용할 수 있습니다.기본적으로 메모리 기반으로 데이터를 관리하여 속도가 빠릅니다. 하지만 애플리케이션 재시작 시 데이터가 초기화되는 특징이 있습니다. 3가지 방식1. Server Mode애플리케이션과 DB가 분리되어 있기 때문에 여러 애플리케이션에서 동일한 DB를 사용하기에 적합합니다따라서 외부 컴퓨터에 DB 엔진을 설치하고 엔진을 구동하여 사용합니다. (현업 방식) 2. In-Memory Mode애플리케이션.. 더보기
[Spring] Formatter Formatter정의객체를 문자열로 변환하거나 문자열을 객체로 변환하는 과정에서 특정한 포맷에 맞춰서 출력하는 시스템입니다.단순히 타입을 변환시키는 `Converter`보다 조금 더 세부적인 기능이라고 생각하면됩니다.`Converter`는 데이터끼리 변환하는 변환기`Formatter`는 사람이 보기 좋게/입력하기 쉽게 포장해주는 포장기 내부 구조public interface Formatter extends Printer, Parser {}`Printer`, `Parser` 상속받고 있습니다. `Printer`@FunctionalInterfacepublic interface Printer { String print(T object, Locale locale);}Object를 String으로 변환하는.. 더보기
[Spring] 파라미터 변환을 위한 Convert 생성 및 등록 방법 목차ConverterDefaultConversionService WebConfig로 Custom Converter 등록하는 방법참조 문헌 Converter정의Spring에서 특정 타입을 다른 타입으로 변환할 때 사용하는 인터페이스로 타입 변환 로직을 캡슐화하여 코드의 재사용성을 높이고 다양한 곳에서 타입 변환이 일관되게 수행되도록 돕습니다. Converter, Custom Converter가 필요한 이유✨ `HttpServletRequest`를 통해 값을 전달받은 후, 컨트롤러 메서드에서 다음과 같이 값을 변환해주는 코드를 직접 작성해야합니다.@Slf4j@RestControllerpublic class TypeConverterController { @GetMapping("/param") p.. 더보기
[Spring] Custom HttpMessageConvert 생성 & 등록을 위한 WebMvcConfigurer 활용 목차개요WebMvcConfigurerCustom MessageConverter 생성 및 등록Custom MessageConverter 필요 상황 개요❗Custom Converter 등록을 위해서만 WebMvcConfigurer을 사용하지는 않습니다. `WebMvcConfigurer`에 대해 간단히 알아본 후, Custom `HttpMessageConverter`를 등록하는 방법에 대해 알아보겠습니다. 또한 일반 Type Converter와 다른 Custom `HttpMessageConverter` 생성 및 등록 방법에 대해 알아보겠습니다. WebMvcConfigurer정의Spring Framework에서 웹 MVC 설정을 사용자 정의할 수 있도록 제공되는 인터페이스입니다. ✨ Spring Boot를.. 더보기