본문 바로가기

백엔드62

MYSQL 적용 ++ POSTGRESQL 까지 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/study?characterEncoding=UTF-8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password= spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.format_sql=true 이와 같은 내용들을 설정해주어야 하고, h2.console.enabled = false로 변경해주어야한다. 위의 updat.. 2024. 1. 7.
DataSource, Transacation Manager 1 DataSource 물리적인 데이터베이스 정보를 담는 인터페이스 . EmbaddedDataBaseBuilder를 주로 사용함( 구현체) , DataSourceBuilder(jdbc DataSource 사용) 그때 그때 세팅 해주면 된다. 2. Transaction Manager JpaTransactionManager가 기본 spring data jpa 사용 구현체. DataSourceTransactionManager(JDBC DATASOURCE 사용 구현체 ) 2개 이상의 DBMS설정이 필요할때, 1. DB를 세팅 2. ENTITYMANAGERFACTORY를 설정해줘야한다. (LOCALCONTAINERENTITYMANAGERFACTORYBEAN) 얘는, 빈으로 @Bean으로 달아주고 구현체를 retu.. 2024. 1. 7.
SPRING DATA JPA 실제 활용 1. @Repository 기본적으로 @Component와 굉장히 유사하나, repository 전용이다. 즉 해당 class를 빈으로 등록한다. 가장 큰 차이는? peristenet layer의 발생 예외를 잡아서 DataAccessException으로 처리해준다. SPRING DATA JPA를 사용한다면, JPAREPOSITORY 안에 기본적으로 어노테이션이 되어있기 때문에 추가해줄 필요가 없다. REPOSITORY -> CRUDREPOSITORY ->LISTCRUD->JPAREPOSITORY 순으로 상속받아오는 내부 구조 . 두가지 방법, 하는 역할이 동일하다. 앞서 말한대로 JPA를 쓸거라면 QUERY를 직접 작성하지 않고, JPAREPOSITORY에 기능을 위임해서 사용하는것을 강하게 추천한다... 2024. 1. 7.
SPRING DATA JPA 개념들 프레임 워크는 이미 만들어진 구조와 도구의 집합으로 , 어플리케이션 개발의 속도와 효율을 지원한다. 템플릿은 이미 모든 것이 결정된 모양에 원하는 데이터를 삽입. FRAMEWORK는, 도구나 라이브러리의 모음 라이브러리는 도구 들의 모음. 프레임 워크는 자동차, 라이브러리는 바퀴. ORM? OBJECT RELATIONAL MAPPING 객체 지향 언어를 활용 즉, DB DATA를 자바 객체와 매핑한다. RDBMS를 객체 지향 DB로 가상화한다. (DB를 추상화한다) 즉, INSERT와 SELECT 등의 코드만을 작성하고, 그 외의 접근 포인터 등의 문제는 프로그램에게 위임한다. 효과 -> INETRFACE에 의존하여 위임하여 작성하니, 특정 DB(MY SQL 등등)을 고려하는 것을 줄인다. JPA JAV.. 2024. 1. 7.
기타 기능 2 , devtool, actuator Devtools -> 스프링부트 개발의 절친 . (일단 넣는것을 추천한다. ) 스프링 부트 모듈들의 세부 설정을 , 개발에 적합하게 자동으로 변경해줌 ex) 캐시 끄기 등이 자동으로 발생. 1. Automatic Restart 자바 코드가 변경되면 자동으로 애프리케이션 재시작 Restart vs Cold start 자주 바뀌는 부분은 restart(이를 통해, 빠르게 자동 재시작 가능) restart의 triggering- > 코드의 변경. cold start는 쉽게, 직접 부트를 재시작 한 것이다. Restart보다 더 빠른것은? Reload. 매우매우 빠르다. 다만 유료 . ex) 내가 바꾼 events코드가, 띄운 이후 바로 반영된다. 2. Live reload 정적 페이지 변경시, 자동 브라우저 .. 2024. 1. 5.
기타 기술 + JPA 기본 설정 1. Rest Repositories Repository부터 , 자동으로 REST API 를 만들어준다. REST라는 구조를 따르는 형태의 API (REST API ) (이런 개념은 나올때 복습하자) 다시 말하자면, 서버와 client가 요청을 보내고 주고 받기 위한 방법이다. 방법은 즉 코드를 의미한다. ex) db에서 웹툰을 뽑는 코드가 있다. 이 코드를 어떻게 client가 동작시킬 것인가? ex) app.get -> 이 url로 get을 요청한다면, 해당 웹툰뽑기 코드를 작동시킬것이다. 즉 api는 어떤 주소(url)로 오면 어떤 행동을 할지. + 그 METHOD는 무엇인지. 그렇다면 어떤 일을 할지 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있다. . 출처 - 내블로그. 그래서 .. 2024. 1. 4.
VIew, View template 특정 양식을 따르게 하여, 양식간 충돌 등을 방지하는 개념 자체를 템플릿이라고 한다. Thymeleaf. Html표현을 지향한다. 장점 : HTML5 웹 표준을 준수한다. .THYMELEAF가 아니라 .html이 변경되지 않는다. template code와 , 문법을 분리할 수도 있다 . (굉장히 신기하다 ) 3가지 문법 1. "th" : tag 2. "data-th" attribute (html5는 , 사용자가 정의 atrribute가 있다. 3. decoupled logic 문법을 통해 볼 수있고, 가장 많이 볼 것은 ${...}를 통해 값(variable을 표현한다) literal - Inline한 표현. ex) the name is ${name} if문 등도 가능하다 (if) ? (then) fr.. 2024. 1. 4.
properties 팁 ++ test의 종류들 logging 1. debug = True 2. trace = True(근데 양이 너무 많아서 자주 사용하진 x) 3. loggin.level.원하는.패키지.이름 = debug/trace 등등 -> 원하는 패키지에만 적용한다. 파일단위 로깅시, 정책이 적용될 수 있음에 유의하기 banner 이거 뜨는거 resource -> Banner.txt에 붙여넣고 사용 가능( 정보 등을 추가하기도 한다) spring.config.activate.on-profile = developer등의 기능있고, 버전이 높아지면서 변경되었다. main에서 banner끄지 -> spring.main.banner-mode 인스턴스 실행을 최대한 미뤄서, 실행 속도를 키운다 . = spring.main.lazy-initalizatio.. 2024. 1. 4.
오류 사용자 입력에 대한 오류 검증을, 진행해야 한다. 이를 계속해서 IF X>5 이런식으로 넣다보면, 관심사 분리를 침해하는 행위이다. -> ANNOTATION 기반으로, @Positive ,@SIze(min=2)등을 method 매개변수에 넣는다. (검증에 대한 특별한 코드가 필요없다) -> Validation 의존성을 추가해주어야 추가되는 기능이다. @Validated 를 class level에 -> 해당 class는, validation의 대상이된다. -> ConstraintViolationException 진행 @valid는 @validated 필요없이, MethodArgumentNotValidException 진행 . @Test void GivenException_WhengetMessage_Then.. 2024. 1. 4.
TDD 정처기에서 배웠던 내용이네, 특히 그중에서도 테스트 중심으로 생각하는 새로운 개발 방법. 일단 test를 작성하고. 이를 통과하는 구현코드를 작성. 주로 애자일모델, 폭포수모델?(어떻게 가능한지는 잘 모르겠다.) 1. Red (실패하는 테스트를 짠다) 2. green(테스트를 성공시킨다) 구현 3. 구현코드를 리팩토링 . 반복한다. TDD까지 하는 이유가 뭘까? 스스로 지속적으로 눈앞에 당장 할일이 생긴다. 협업 코딩 환경에서 주로 사용하는 방식이다. 실질적으로 효율적인 TDD가 되기 위해서는, 설계 흐름에 익숙해야하낟. 사람의 요구사항을 프로그램이 할수 있는 기능으로 변환해야하고, 단위 기능으로 세분화하고. 기능의 관계와 상호작용 설계하는 모든것이 가능해야한다. 테스트 작성 또한 잘 해야한다. 발전 과.. 2024. 1. 3.