Annotation(어노테이션) 어노테이션이란? JVM 이 읽는 주석으로서 JDK 5.0부터 사용할 수 있었다, 유용한 정보 제공을 위해 쓰이며 해당 타겟에 대한 동작 수행하는 프로그램 외에는 다른 프로그램에게 영향을 주지 않는다 종류 자바에서 제공하는 표준 어노테이션, 어노테이션 정의에 사용되는 메타 어노테이션, 사용자 어노테이션이 있다 표준 어노테이션 자바에서 기본적으로 제공하는 어노테이션이다. @Override : 컴파일러에게 메서드를 오버라이딩하는 것이라 알림 @Deprecated : 앞으로 사용하지 않을 대상임을 알린다. @FunctionalInterface : 함수형 인터페이스라는 것을 알린다. @SuppressWarning : 컴파일러가 경고 메시지를 나타내지 않는다. @SafeVaragrs..
트랜잭션과 영속성 컨텍스트 트랜잭션 영속성 컨텍스트 트랜잭션 : 쪼갤 수 없는 업무의 최소 단위 문제상황 : SQL 을 실행하는데 있어서 중간에 에러가 나게되면 주문은 저장되었는데 결제 기록은 저장이 안되어 있는등 데이터까 꼬일수 있다 해결 방안 -> 모두 성공하거나, 하나라도 실패하게 된다면 모두 실패시키는 방안 트랜잭션 시작하기 start transaction; 트랜잭션 정상 종료하기(SQL 반영) commit; 트랜잭션 실패 처리하기(SQL 미반영) rollback; 트랜잭션 적용과 영속성 컨텍스트 @Transactional 어노테이션을 통해서 트랜잭션을 적용시킬 수 있다 SELECT 쿼리만 사용할시, readOnly 옵션을 쓸 수 있다(데이터 변경 위한 기능이 빠져서 성능적인 이점이 있다) @Tr..
Spring Data JPA다루기 너무 어려운, 직접 사용하는 문자열SQL 유저 테이블 대응 Entity Class 만들기 Spring Data JPA를 이용해 쿼리 날려보기 너무 어려운, 직접 사용하는 문자열SQL 지금까지 sql을 직접 작성해서 db로 보냄, 그에 따른 문제가 몇가지 있는데 문자열을 사람이 작성하기에 실수할수도 있으며(자바 문법상 문자열일 뿐), 오류의 인지시점이 느리다(컴파일 되어서 코드가 실행될 시점인 런타임에서야) 특정 db에 종속적이게 된다(다른 sql을 사용하려 하면 모든 문법을 다 바꿔줘야 한다) 테이블을 하나 만들 때마다 CRUD쿼리를 만들어야 해서 반복작업이 많아진다 데이터베이스의 테이블과 객체는 패러다임이 다르다(객체 -> 양방향으로 가르킬 수 있다, db는 단방향으로..
UserController와 스프링 컨테이너 UserController 스프링 컨테이너 UserController public class UserController { private final UserService userService; private final JdbcTemplate jdbcTemplate; public UserController(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; this.userService = new UserService(jdbcTemplate); } } UserController는 JdbcTemplate에 의존하고 있다. 설정해준적 없는 JdbcTemplate는 @RestController 덕에 사용할 ..
1주차 인프런에서 처음으로 시작하는 스터디 클럽에 들어간지 1주일이 되었습니다. 강의는 최태현님의 https://www.inflearn.com/course/lecture?courseSlug=%EC%9E%90%EB%B0%94-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%84%9C%EB%B2%84%EA%B0%9C%EB%B0%9C-%EC%98%AC%EC%9D%B8%EC%9B%90를 강사님께서 하루마다의 과제분을 주시고 공부한것을 블로깅 하는 방식이었습니다. 처음 과제의 양을 봤을때는 "아 할만한대?" 라는 생각으로 강의를 듣고 블로깅을 하였지만, 처음의 호기로운 생각은 어디가고 이것을 어떻게 글로써 풀어서 쓸지, 강의의 내용을 제대로 이해한 것은 맞는지 엄청나게 해..
좋은 코드와 Controller분리 좋은 코드는 왜 중요한가? Controller 3단 분리하기 Service, Repository 좋은 코드와 Controller분리 좋은 코드는 왜 중요한가? Controller 3단 분리하기 Service, Repository 좋은 코드는 왜 중요한가? 코드만 보고도 어떠한 기능을 하는지 알 수 있도록 해야지 협업을 하는데 있어서나 시간을 절약할 수 있다 않좋은 코드가 쌓일수록 생산성 떨어짐 하나의 클래스에 여러가지 동작이 있다면? 그 함수를 여러 명이 동시에 수정할 수 없다, 그 함수를 읽고, 이해하는 것이 너무 어렵다 함수의 어느 부분을 수정하더라도 함수 전체에 영향을 미칠 수 있어 수정이 어렵다 너무 큰 기능이어서 테스트 하기 힘들다 -> 유지보수성이 떨어진다 ..