분류 전체보기

Tech/데이터 접근 기술

스프링 데이터 JPA 소개

주요 기능 스프링 데이터 JPA는 JPA를 편리하게 사용할 수 있도록 도와주는 라이브러리이다. 공통 인터페이스 기능 쿼리 메서드 기능 공통 인터페이스 기능 JpaRepository Interface 를 통해서 기본적인 CRUD 기능을 제공한다. 공통화 가능한 기능이 거의 모두 포함되어 있다. @Indexed public interface Repository { } package org.springframework.data.repository; @NoRepositoryBean public interface CrudRepository extends Repository { S save(S entity); Iterable saveAll(Iterable entities); Optional findById(ID i..

Tech/데이터 접근 기술

JPA 소개

스프링: DI 컨테이너를 포함한 애플리케이션 전반의 다양한 기능을 제공 JPA: ORM 데이터 접근 기술을 제공 JdbcTemplate, MyBatis 같은 SQL Mapper 기술은 SQL을 개발자가 직접 작성해야 한다. JPA를 사용하면 SQL도 JPA가 대신 작성하고 처리해준다. 스프링 데이터 JPA, Querydsl 라는 JPA를 편리하게 사용하도록 도와주는 기술을 함께 사용한다. 설정 spring-boot-starter-data-jpa 라이브러리를 사용 spring-boot-starter-jdbc 도 함께 포함한다. 다음과 같은 라이브러리가 추가됨 hibernate-core: JPA 구현체인 하이버네이트 라이브러리 jakarta.persistence-api: JPA Interface spring..

Tech/데이터 접근 기술

MyBatis 소개

장점 SQL을 XML에 편리하게 작성할 수 있고, 동적 쿼리를 매우 편리하게 작성할 수 있다. 단점 JdbcTemplate 은 스프링에 내장된 기능이고, 별도의 설정없이 사용할 수 있다. MyBatis는 약간의 설정이 필요한다. 설정 mybatis-spring-boot-starter 라이브러리를 사용하면 MyBatis를 스프링과 통합하고, 설정도 아주 간단히 할 수 있다. //MyBatis 추가 implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0' 스프링 부트가 버전을 관리해주는 공식 라이브러리가 아니기 때문에 버전 정보를 붙여야 한다. 라이브러리 mybatis-spring-boot-starter : MyBatis 를 스프링..

Tech/데이터 접근 기술

스프링 JdbcTemplate 소개

SQL을 직접 사용하는 경우에 JdbcTemplate은 JDBC를 매우 편리하게 사용할 수 있게 도와준다. 장점 설정의 편리함 spring-jdbc 라이브러리에 포함 반복 문제 해결 템플릿 콜백 패턴 사용 단점 동적 SQL 해결이 어려움 save INSERT, UPDATE, DELETE SQL에는 template.update() 메서드를 사용한다. 데이터 저장시 PK 생성시에 identity ( auto increment ) 방식을 사용한다. 따라서 데이터베이스가 PK인 ID를 대신 생성해준다. 데이터베이스에 INSERT가 완료되어야 생성된 PK ID 값을 확인할 수 있다. KeyHolder 와 connection.preparedStatement 을 사용해서 id를 지정해주면 INSERT 쿼리 실행 이후..

Language/Java

Optional 메소드

Optional 메소드 static Optional empty() 아무런 값도 가지지 않는 비어있는 Optional 객체를 반환함. T get() Optional 객체에 저장된 값을 반환함. boolean isPresent() 저장된 값이 존재하면 true를 반환하고, 값이 존재하지 않으면 false를 반환함. static Optional of(T value) null이 아닌 명시된 값을 가지는 Optional 객체를 반환함. static Optional ofNullable(T value) 명시된 값이 null이 아니면 명시된 값을 가지는 Optional 객체를 반환하며, 명시된 값이 null이면 비어있는 Optional 객체를 반환함. T orElse(T other) 저장된 값이 존재하면 그 값을 반환..

Language/Java

예외 ( Exception )

프로그램 오류 프로그램이 실행중에 어떤 원인에 의해 오작동 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생 시점에 따라서 나눌 수 있다. 컴파일 에러 : 컴파일 시, 발생하는 에러 런타임 에러 : 프로그램 실행 도중, 발생하는 에러 논리적 에러 : 컴파일도 잘되고 실행도 잘되지만, 의도와 다르게 동작하는 것 런타임 에러 자바에서는 실행 시 발생할 수 있는 프로그램 오류를 두 가지로 구분했다. error (에러) 메모리 부족 (OutOfMemoryErrorr) 나 스택오버플로우 (StackOverFlow) 같이 일단 발생하면 복구할 수 없는 심각한 오류 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 발생하면 프로그램의 비정상적 종..

Language/Java

IllegalArgumentException, IllegalStateException

IllegalArgumentException 사용자가 값을 잘못 입력한 경우에 발생한다. 사용자의 잘못으로 발생하는 에러를 대표한다. IllegalStateException 사용자가 값을 제대로 입력했지만, 개발자 코드가 값을 처리할 준비가 안된 경우에 발생한다. 예를 들어, 로또 게임 진행 후 게임이 종료된 상태에서 사용자가 추가 진행을 위해 금액을 입력하는 경우. 이미 로또 게임 로직이 종료되었기 때문에 사용자의 입력에 대응할 수 없다. 인용 https://hyeon9mak.github.io/Java-exception/ Java Exception 제이슨의 Exception 강의를 들으면서 공부한 내용을 정리해보자. hyeon9mak.github.io

Language/Java

추상클래스

추상 메서드는 작동 로직은 없고 이름만 있는 메서드라고 보면 된다. public abstract void draw(); 추상 클래스 안의 메서드를 미완성으로 남겨놓는 이유는 부모(추상) 클래스에서 메서드를 선언부만 작성하고, 실제 내용은 상속받는 클래스에서 구현하도록 하기 위해 일부러 비워두는 개념이다. 추상 클래스 하나 이상의 추상 메소드를 포함하는 클래스라고 정의하기도 한다. 클래스의 선언부에 abstract 키워드가 있다는 말은 안에 abstract method 가 있으니 상속을 통해서 구현해주라는 지침이기도 하다. 추상 클래스는 추상 메서드를 포함하고 있다는 것을 제외하고는 일반 클래스와 전혀 다르지 않다. 추상 클래스에도 생성자가 있으며, 독립적인 인스턴스 멤버 변수와 메서드도 가질 수 있다. ..

Tech/템플릿 엔진

타임리프 사용법

핵심 순수 HTML을 그대로 유지하면서 View Template 도 사용할 수 있는 Thymeleaf의 특징을 Natural Template 이라 한다. th: ~~~ 가 붙은 부분은 서버사이드에서 렌더링되고, 기존의 것을 대체한다. 이 부분이 없으면 기존 html의 ~~~ 속성이 그대로 사용된다. HTML을 파일로 직접 열었을 때, th: ~~~ 가 있어도 웹 브라우저는 th: 속성을 알지 못하므로 무시한다. 즉, 정적 HTML 리소스 파일 보기를 유지하면서 템플릿 기능도 할 수 있다. 사용 선언 변수 표현식 - ${ ... } 10000 모델(Model)에 포함된 값이나, 타임리프 변수로 선언한 값(itemId=${item.id})을 조회할 수 있다. Property 접근법을 사용한다. ( item...

Tech/HTML

Form 데이터 전송 시 button 태그 유의사항

다음과 같이 폼 입력값에 대한 검증이 들어가있는 컨트롤러에 입력폼을 전송할 때 button 태그에서 type="button"을 사용해줘야 검증 오류에 걸리지 않고 다음 작업을 수행할 수 있다.

kimjingyu
'분류 전체보기' 카테고리의 글 목록 (26 Page)