728x90

Spring 14

[ Mybatis ] sqlSession 이용해서 commit 수동만들기

개요 배치 작업을 맡고 난 뒤 35만건 까지는 mybatis 문으로 어떻게든 만회했으나.. 4000만건 이상의 데이터를 배치작업 해야할수도 있는 상황이 생겨서 트랜젝션 관련 고민을 하게 되었다. 그래서 모든 동작이 끝나고 난 뒤 commit 하는 방식 대신, 수동으로 만들어서 for문 돌면서 insert 해줄때마다 commit을 수동으로 해주는 방법을 해야겠다고 생각했다. 1차로 작성한 코드 public Boolean excuteJob (){ Boolean result = false; List exampleVo = new ArrayList(); try{ mybatisEdbConfig.edbSqlSessionTemplate().getConnection(); deleteMenualTransactionExam..

Spring 2024.01.15

[Spring] 전체 흐름 정리

새로운 할인 정책 개발 - 다형성 덕분에 새로운 정률할인 정책 코드를 추가로 개발하는 것 자체는 아무 문제가 없음 새로운 할인 정책의 문제점 - 새로 개발한 정률할인정택을 적용하려고 하니 클라이언트 코드 인 주문 서비스 구현체도 함께 변경해야함 - 주문 서비스 클라이언트가 인터페이스인 `DiscountPolicy` 뿐만 아니라, 구체 클래스인 `FixDiscountPolicy` 도 함께 의존 -> DIP위반 관심사의 분리 - 애플리케이션을 하나의 공연으로 생각 - 기존에는 클라이언트가 의존하는 서버 구현 객체를 직접 생성하고, 실행함 - 비유를 하면 기존에는 남자주인공 배우가 공연도 하고, 동시에 여배우도 직정 초빙하는 다양한 택임을 가지고 있었음 - 공연 구성, 담당배우 섭외,지정하는 책임을 담당하는 ..

Spring 2023.11.28

[Spring] 새로운 구조와 할인 정책 적용

새로운 구조와 할인 정책 적용 - 처음으로 돌아가서 정액할인 정책을 정률 (%) 할인 정책으로 변경해보자. - FixDiscountPolicy > RateDiscountPolicy : 어떤 부분만 변경하면 될까? "AppConfig"의 등장으로 애플리케이션이 크게 사용영역과, 객체를 생성하고 구성(Configuration)하는 영역으로 분리되었다. 따라서 구성영역의 코드만 고치면 됨 !!! - `FixDiscountPolicy` > `RateDiscountPolicy` 로 변경해도 구성 영역만 영향을 받고, 사용영역은 전혀 영향을 받지 않는다. package hello.core; import hello.core.discount.DiscountPolicy; import hello.core.discount...

Spring 2023.11.28

[Spring] 관심사의 분리, AppConfig

관심사의 분리 - 애플리케이션을 하나의 공연이라 생각해보자. 각각의 인터페이스를 배역(배우역할)이라 생각했을때, 실제 배역 맞는 배우를 선택하는 것은 누구인가? - 로미오와 줄리엣 공연을 하면 로미오 역할을 누가 할 지 줄리엣 역할을 누가 할지는 배우들이 정하는것이 아님 - 이전 코드는 마치 로미오 역할 (인터페이스)을 하는 레오나르도 딭카프리오(구현체,배우)가 줄리엣 역할(인터페이스)을 하는 여자주인공(구현체, 배우)을 직접 초빙하는 것과 같았음. - 디카프리오는 공연도 해야하고 동시에 여자주인공도 공연에 직접 초빙해야하는 "다양한 책임"을 가지고 있었다. >> 관심사를 분리하자 - 배우는 본인의 역할인 배역을 수행하는 것에만 집중해야한다. - 디카프리오는 어떤 여자주인공이 선택되더라도 똑같이 공연을 ..

Spring 2023.11.28

[Spring] 프로젝트 생성

https://start.spring.io/ 우선 위 사이트에 접속해서 스프링 초기 환경설정을 해준 뒤 GENERATE 버튼을 눌러서 다운받아준다. (설정은 위 화면과 동일하게 하였는데, 추후에 버전이 바뀌게 되어 현재와 버전이 다를수도 있다. 그럴땐 그 상황에서의 가장 안정적인 버전으로 하면 되는데, 그 기준은 (SNAPSHOT) 이 붙이 않은 것이 기준이며, 3.xx 는 자바 17을 써야하기때문에 나는 11이 이미 깔려있어서 그냥 2.7 버전으로 했다.) 그리고 의존은 일부러 쌩으로 해보기 위해 하나도 안넣었다. 그러면 진짜 찐 기본 라이브러리만 받아진다. 압축된 파일을 풀어주고 파일 안으로 들어가보면 build.gradle이 있다. 그것을 인텔리제이 혹은 이클립스에서 열어주고 빌드 및 라이브러리 다..

Spring 2023.10.30

[Spring] 객체지향 설계와 스프링

📌 스프링 이야기에 왜 객체지향 이야기가 나오는가 ? - 스프링은 다음 기술로 다형성 + OCP,DIP를 가능하게 지원 ✔️ DI(Dependency Injection) : 의존관계, 의존성주입 ✔️ DI 컨테이너 제공 > 자바 객체들을 컨테이너 안에 넣어놓고 의존관계를 주입하고 제어해줌 - 클라이언트 코드의 변경없이 기능 확장 - 쉽게 부품을 교체하듯이 개발할 수 있음 📌 스프링이 없던 시절 - 옛날 어떤 개발자가 좋은 객체지향개발을 하려고 OCP,DIP 원칙을 지키면서 개발을 해보니, 배보다 배꼽이 크다. 그래서 프레임 워크로 만들어버림 - 순수하게 자바로 OCP,DIP 원칙들을 지키면서 개발을 해보면, 결국 스프링프레임워크를 만들게 된다 (정확히는 DI컨테이너) - DI개념은 말로 설명해도 이해가 ..

Spring 2023.10.30

[Spring] 좋은 객체지향 설계의 5가지 원칙 (SOLID)

SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 - SRP (Single responsibility principle): 단일 책임 원칙 - OCP(Open/closed principle) : 개방-폐쇄 원칙 - LSP(Liskov substitution principle) : 리스코프 치환 원칙 - ISP(Interface segregation principle) : 인터페이스 분리 원칙 - DIP(Dependency inversion principle) : 의존관계 역전 원칙 SRP (Single responsibility principle) 단일 책임 원칙 - 하나의 클래스는 하나의 책임만 가져야 한다. - 하나의 책임이라는 것은 모호하다. > 클 수 있고, 작..

Spring 2023.10.29

[Spring] 좋은 객체지향 프로그래밍이란?

객체지향의 특징 - 캡슐화 - 상속 - 추상화 - 다형성 객체지향 프로그래밍이란? 객체지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메세지를 주고받고 , 데이터를 처리할 수 있다. (협력) 객체지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기때문에 대규모 스프트웨어 개발에 많이 사용된다. 유연하고 변경이 용이 컴포넌트를 쉽고 유연하게 변경하면서 개발 할 수 있는 방법 궁극의 유연함, 궁극의 변경 용이 >> 다형성 (Polimorphism) 다형성 역할과 구현으로 구분 실생활에서 비유 ) 운전자는 소나타를 타다가 테슬라 3로 바꾼다 > 그래도 운전 할 수 있음. 자동차라는 역할에 ..

Spring 2023.10.29

[Spring] Spring 이란 ?

Spring 이란? Java 의 웹 프레임워크로 Java 언어를 기반으로 사용한다. Java를 이용한 기술은 JSP,MyBatis,JPA 등 여러가지가 있는데 Spring은 이 기술들을 더 편하게 사용하기 위해 만들어졌다. Spring의 장점 1. 중복코드의 사용률 감소 2. 비즈니스 로직을 더 간단하게 해준다. 3.오픈소스를 보다 효율적으로 사용이 가능 => Java 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임 워크 Spring 생태계 Spring은 어떤 특정한 하나가 아니라, 여러가지 기술들의 모음이다. - 스프링프레임워크 : 스프링의 핵심이 되는 기술 - 스프링부트 : 여러 스프링 기술들을 편리하게 사용하도록 도와줌 - 스트링 데이터 : DB 기술을 간단하게 도와주는 기술. 가장 많이 ..

Spring 2023.10.29

[오류] 유효한 문자는 RFC 7230 and RFC 3986에서 정의 오류

리뷰를 GET 할 때 리뷰 이미지에 index값이 1,2,3,4,5, 이런식으로 들어오는 게 아니라 이런 식으로 들어온다.. 이제 왜때문에 이렇게 값이 들어오는지 파보도록 하자 .. * 오른쪽으로 들어와야 정상 = localhost로 연결했을 때 상황 우선, 추측을 해보면 1. addReview 할 때 애초에 잘못 insert 했다. 2. getReview 할 때 reviewImage 값 set이 이상하게 됐다. 3. 배포 연결한 DB 설정 /서버 문제 정도로 우선 예상이 가는데 우선 local에서는 같은 코드로도 아주 잘 돌아가니 3번이 제일 의심간다 (근데 저 ImageIndexs는 Vo로 만든건데 그게 연관이 있나..) 우선 배포한 사이트에서만 오류가 나기때문에 서버로그를 확인하기 위해 SSH 접속..

Spring 2023.06.17
728x90