본문 바로가기

백/spring boot

(7)
왜 SELECT를 할때도 @Transactional을 붙이는게 좋은가? 트랜잭션 : 일이 처리되기 위한 가장 작은 단위 - DB 격리 수준 1. 오라클 READ COMMIT 오라클의 경우는 변경하려고하는 데이터가 커밋이 되기 전까지는 undo영역의 데이터를 읽어옴 좌측의 A트랜잭션이 업데이트 후 커밋 직전에 B트랜잭션에서 empno=11을 조회하게 되면, 장보고가 아닌 임꺽정이 조회됩니다. COMMIT 된 후 장보고를 읽어올 수 있다 이것을 READ COMMIT이라고함! READ COMMIT의 정합성 문제 - 일어날 수 있는 문제의 경우 SELECT 를 했을때 항상 동일하게 가격이 10000원일테니, 예상 정산 결과는(SELECT 3번 한 결과물)3만원인데, COMMIT후 가격이 변해 2만원이 나타났다?! 위와같이 정산 서비스에 대해서 조회시 만원의 결과를 보여주다가 어느순..
스프링부트 - mybatis 사용하기 추가해야할것! 1.프로퍼티 #Server server.port=8082 server.servlet.session.timeout=360000 #Spring MVC spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp #Database config spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE spring.datasource.username=scott spring.datasource.password=tiger spring.datasource.driverClassName=oracle.jdbc.driver.OracleDriver #mybatis config mybatis.config-loc..
스프링 부트 프로젝트 생성하기(gradle) 1. Maven vs Gradle  Maven  프로젝트의 라이브러리들을 관리해주는 도구이고, 자바로 개발된 어플리케이션에만 사용 가능 하다는 특징이 있다. 또한, 관리 대상 의 라이브러리와 연관된 다른 라이브러리들까지 연동되어 관리된 다는 편리함이 있다. 아파치 라이선스로 배포되는 오픈소스 SW이다. Maven은 XML 기반.  Gradle  Groovy 기반의 빌드 자동화 시스템이다. (Groovy: Java와 문법이 유사한 프로그래밍 언어로, JVM위에서 작동함) Maven과 다르게 Python, Java, C, C++ 등 다양한 언어를 지원한다는 특징이 있다. 안드로이드 스튜디오의 공식 빌드 시스템이다.=> 앱개발시 gradle 사용 기존 Maven을 통 해 XML로 빌드처리를 하는 경우 ..
스프링 부트 프로젝트 생성하기(Maven) 1. 스프링 부트 ?  메이븐의 라이브러리 자동 업데이트 기능을 이어받으면서 기존 스프링 프레임워크의 복잡한 설정 과정은 최대한 줄이면서 개발할 수 있음  배포 또는 테스트 역시 스프링 프레임워크보다 쉽고 빠르게 할 수 있음 특징?  일반적인 응용 프로그램을 단독으로 실행하는 수준으로 스프링 애플리케이션을 구현할 수 있음  프로젝트 환경을 구축할 때 필요한 톰캣 서버 툴이 내장 되어 있어 따로 설치할 필요가 없음  XML 기반 설정이나 코드 없이 환경 설정을 자동화 할 수 있음  의존성 관리를 쉽게 자동으로 할 수 있음 2. 스프링 부트 프로젝트 생성하기 1.이니셜라이저 사용 2.sts에서 바로 스프링부트 프로젝트 만들기 jdk 8과는 보통 2.7.5버전 많이 사용 없는 건 검색해서 추가할 수..
스프링부트 3. 스프링 부트 동작원리 1. 스프링부트 동작원리 (1) 내장 톰켓을 가진다. 톰켓을 따로 설치할 필요 없이 바로 실행가능하다. 우선 톰켓에대한 개념 정리 다시필요. 소켓이 뭔지 알아야함. 소켓 : 운영체제가 가지고 있는 것. a가 5000번 포트를 열고 b가 ip주소 5000을 넣으면 서로 통신이 가능함. 그런데 이미 b가 a의 5000번 포트를 쓰고 있으면 c는 5000 번 포트로 연결할 방법이 없음 ⇒5000번 포트는 연결용도로만 쓰고 새로운 포트를 랜덤 생성해서 그걸로 통신함 근데 이렇게 되면 다른 사용자의 요청을 받을 수 없음 cpu가 b와 5001번으로 소통하고 있기 때문에 ⇒ 5001번을 만들때는 새로운 스레드를 만들어줌, 그리고 스레드가 만들어지면 원래 5000번은 끊김 소켓통신 : 시간을 쪼개서 동작. 장점: 연..
스프링 부트 2. JPA JPA란? JPA는 Java Persistence API 이다. JPA는 ORM 기술이다. JPA는 반복적인 CRUD 작업을 생략하게 해준다. JPA는 영속성 컨텍스트를 가지고 있다. JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다. (DB는 객체저장 불가능) JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다. (상속, 콤포지션, 연관관계) 방언 처리가 용이하여 Migration하기 좋음. 유지보수에도 좋음. JPA는 쉽지만 어렵다. JPA는 Java Persistence API 이다. ⇒ persistence: 영속성 컴퓨터의 ram에 있는 데이터는 휘발성이다. 이 데이터를 날아가지 못하게 하기 위해 하드디스크에 영구적으로 저장을 한다. 영속성 : 데이터를 생성한 프로그램이 종..
스프링부트 1. 기본개념정리 스프링부트 1.기본개념정리 스프링부트 강좌 개념 정리 스프링은 프레임워크이다. 프레임워크이므로 우리가 아무리 내용을 바꿔도 스프링이 만든 틀안에 속하게된다. 틀 안에서 개발을 하면 아무리 이상하게 해도 최소한 틀 밖에 튀어나가지는 않는다! 스프링은 오픈소스이다. 오픈소스이기에 스프링의 내부 구조를 사용자가 볼 수 있으며, 불편한 부분을 내가 고칠수도 있다. 스프링은 IoC 컨테이너를 가진다. 스프링은 DI 를 지원한다. 스프링은 엄청나게 많은 필터를 가지고 있다. 스프링은 엄청나게 많은 어노테이션을 가지고 있다. (리플렉션, 컴파일체킹) 스프링은 MessageConverter를 가지고 있다. 기본값은 현재 Json이다. 스프링은 BufferedReader와 BufferedWriter를 쉽게 사용할 수 있..