728x90

분류 전체보기 331

4) Querydsl 설정

Querydsl 설정 아래 내용은 https://github.com/beaver84/setting-test 에서 실제 소스를 확인할 수 있습니다. JPA 설정에 이어서 편리한 기능을 제공하는 Querydsl 설정을 추가한다. 우선, build.gradle 에 라이브러리를 추가 후, gradle을 새로고침을 한다. //Querydsl 버전 관련 buildscript { ext { queryDslVersion = "5.0.0" } } plugins { ... //Querydsl 관련 추가 id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' ... } dependencies { ... //Querydsl 관련 실제 lib 추가 implementation "com..

3) JPA 다중 스키마 설정

JPA 다중 스키마 설정 아래 내용은 https://github.com/beaver84/setting-test 에서 실제 소스를 확인할 수 있습니다. JPA 구조 Persistence: EntityManagerFactory 인스턴스를 얻기 위한 정적 메서드를 포함하는 클래스이다. EntityManagerFactory: EntityManager의 팩토리 클래스입니다. EntityManager의 여러 인스턴스를 생성하고 관리한다. EntityManager: 개체에 대한 지속성 작업을 제어하는 인터페이스이다. 쿼리 인스턴스에서 작동합니다. Entity 엔터티는 데이터베이스에 레코드로 저장되는 persistence 개체입니다. Persistence Unit: 모든 엔터티 클래스 집합을 정의합니다. 애플리케이션에..

2) MyBatis 3.0 다중 스키마 설정

MyBatis 3.0 다중 스키마 설정 아래 내용은 https://github.com/beaver84/setting-test 에서 실제 소스를 확인할 수 있습니다. 우리가 사용하는 Spring와 하이버네이트에서 제공해주는 @Transactional는 알아서 트랜잭션을 관리해주는 마법의 키워드가 아니다. 추상화해서 사용할 뿐이지 실제는 위와같이 JDBC 트랜잭션을 사용하여 구현한다. DAO에서 Database에 접근하기 위해서는 Spring-jdbc가 필요하고, 이는 DataSource 정보로부터 구할 수 있다. 또한, 스프링은 트랜잭션 처리를 TranscationManager 객체를 통해 처리한다. 구현체는 갈아끼울 수 있게 인터페이스인 PlatformTranscationManager가 주입되어 사용된다..

1) 스프링 부트 프로젝트 생성

스프링 부트 프로젝트 생성 아래 내용은 https://github.com/beaver84/setting-test 에서 실제 소스를 확인할 수 있습니다. 프로젝트 개발을 위해 intelliJ에서 새 프로젝트 만들기를 클릭합니다. 다음 버튼을 클릭 (comment - 현재 기준 Spring Boot 3.x.x 버전은 아직 안정화되지 못했다고 판단하여 2점대 버전중 가장 최신 버전으로 프로젝트를 진행하도록 하였습니다) 이번에는 2.7.9 버전을 선택하고 생성 버튼을 클릭합니다. 루트 디렉터리에서 build.gradle을 더블 클릭합니다. build.gradle 파일에 아래와 같이 추가합니다. plugins { id 'java' id 'org.springframework.boot' version '2.7.4' ..

SpringEL

SpringEL 타임리프에서는 ${...} 라는 변수 표현식을 사용하여 변수를 사용한다 (선택 변수는 *{...} ) 이 변수 표현식에는 SpringEL이라는 스프링이 제공하는 표현식을 사용할 수 있다. SpringEL Spring Expression Language라는 뜻의 SpringEL (SpEL)은 런타임 시 메서드 호출 및 기본 문자열 템플릿 등의 기능을 제공한다. #{"표현식"} , ${"프로퍼티"} 으로 사용한다. (SpringEL 공식문서 링크 : https://docs.spring.io/spring-framework/docs/3.0.x/reference/expressions.html ) Thymeleaf Variable Expression : ${...} Text Thymeleaf Var..

Thymeleaf 2023.03.18

shift 명령어

Shift 명령어 Shift 명령은 커맨드라인에 인수로 받아드린 값을 위치지정 매개변수에 다시 할당하여 커맨드라인 인수를 통해 증가 할 수 있도록 합니다. Shift n 을 한후 * 에 있는 모든 매개 변수가 n 위치만큼 왼쪽으로 이동하고 #는 n만큼 감소합니다. n의 초기값은 1입니다. shift 명령은 매개변수 0에 영향을 주지 않습니다. 일단 이동을 완료했으면, 명령줄을 벗어나 자리 이동된 인수들은 분실됩니다. 나중에 그것들을 프로그램에서 참조할 필요가 있으면, shift를 실행하기 전에 그 것들을 저장해야 합니다. 예제 #!/bin/sh orig_args=$* echo "$# 개의 인수를 입력받았습니다." echo "인수들 : $*" echo "shift 2를 실행합니다." shift 2 echo..

(bash shell) select 문

select 문 메뉴를 생성할 수 있는 루프 명령 list에 지정한 항목을 선택 가능한 메뉴로 만들어 화면에 출력 각 항목은 순서대로 번호가 붙여짐 사용자 입력을 위한 프롬프트로는 PS3 환경 변수에 저장된 문자열을 사용 사용자가 입력한 값은 select와 in 사이에 지정한 변수에 저장됨 형식 select 변수 in list do 명령 done 스크립트 예 $ cat -n test_select 1 #!/bin/bash 2 # 3 # test select 4 # 5 6 PS3=“Input command(1-3) :” 7 8 select cmd in pwd date quit # pwd=1, date=2, quit=3 9 do 10 case $cmd in 11 pwd) pwd ;; 12 date) date ..

Entity Manager Factory와 persist, flush, commit

Entity Manager Factory와 persist, flush, commit 연관 관계 학교에서 한 명의 학생이 하나의 반에 속해있는 상황을 가정해보자. class Student { int studentId; String name; Class clazz; } class Class { int classId; String className; Teacher teacher; } OOP 에서는 학생에 대한 객체가 반에 대한 객체를 포함한다. 정확히는 참조를 가지고 있다. 반면, RDB 에서는 참조를 가지는 것이 아니라 반에 대한 참조를 FK 로 대체하고, 반에 대한 데이터를 분리하여 따로 저장해야한다. 즉, 데이터 저장 시에 데이터를 분리하여 2개의 쿼리를 사용해야 하며, 다시 읽을 때는 조인을 통한 재조..

JPA 2023.03.06

@Controller와 @RestController의 차이점

@Controller와 @RestController의 차이 1. @Controller 이해 Controller로 View 반환하기 전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다. 아래와 같은 과정을 통해 Spring MVC Container는 Client의 요청으로부터 View를 반환합니다. Client는 URI 형식으로 웹 서비스에 요청을 보낸다. DispatcherServlet이 요청을 위임할 HandlerMapping을 찾는다. HandlerMapping을 통해 요청을 Controller로 위임한다. Controller는 요청을 처리한 후에 ViewName을 반환한다. DispatcherServlet은 ViewResolver를 통해 View..

Spring 2023.03.05

PointCut 표현식 정리

PointCut 표현식 포인트컷에는 다양한 명시자를 이용할 수 있습니다. execution Advice를 적용할 메서드를 명시할 때 사용합니다. within 특정 타입에 속하는 메서드를 JoinPoint로 설정되도록 명시할 때 사용합니다. bean 스프링 버전 2.5 버전부터 지원하기 시작했으며, 스프링 빈을 이용하여 JoinPoint를 설정합니다. execution 명시자 execution([수식어] 리턴타입 [클래스이름].이름(파라미터) 수식어 : public, private 등 수식어를 명시합니다. (생략 가능) 리턴타입 : 리턴 타입을 명시합니다. 클래스이름 및 이름 : 클래스이름과 메서드 이름을 명시합니다. (클래스 이름은 풀 패키지명으로 명시해야합니다. 생략도 가능) 파라미터 : 메서드의 파라..

Spring 2023.03.03
728x90