Java | spring68 JPA Entity & 영속성 컨텍스트 & 라이프 사이클 알아보자! JPA는 사용하기 전에 알아야 할 개념들이 있다. 그 중에서도 기본적인 개념인 Entity / 영속성 컨텍스트 / 라이프 사이클에 대해 알아보자. JPA Entity 테이블과 대응하는 하나의 클래스 Entity 4가지 상태 : 비영속, 영속, 준영속, 삭제 Entity 예시 코드 @Entity : 엔티티 클래스에 설정, 필수값 @Table : 엔티티와 매핑할 테이블명 지정 @Id : 식별자 속성에 설정, 필수값 @Coulumn : 매핑할 테이블의 컬럼, 제약조건, 필드면 다른 경우 name 지정 가능 @Entity @Table(name = "user") public class UserEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Co.. 2022. 10. 14. JPA란 무엇인가? Mybatis와 차이점 (+기초 무료 인강 추천) JAVA/Spring을 공부하거나 사용한 개발자라면 JPA를 사용해 보거나, 많이 들어봤을 것이다. 요새 많은 곳에서 사용하는 기술 중 하나이다. 레거시 서비스가 아닌 서비스를 제공하는 곳이라면 개발을 할 때 JPA를 많이 사용하는 추세이다. JPA란 무엇인지, 기존에 쓰던 Mybatis와 비교하면 알아보자. JPA(Java Persistence API) 자바 진영의 ORM 기술 표준 자바 객체와 DB 데이터 간의 매핑을 처리하기 위한 ORM(Object-Relational Mapping) 표준 자바 ORM 기술에 대한 API 표준 명세(인터페이스를 모아 둔 것!) 위의 이야기만 보면 어렵게 느껴질 수 밖에 없지만, 자바로 DB에서 데이터를 조회, 수정, 삭제, 추가를 할 때 사용하는 기술이라고 생각하면.. 2022. 10. 14. 스프링 트랜잭션 @Transactional 개념 (+주요 설정값) 스프링에서 트랜잭션을 사용하는 @Transaction 어노테이션을 추가 하게 된다. 일반적으로 DB에서 데이터를 조회, 추가, 수정, 삭제 등을 하는 경우 메소드 상단에 트랜잭션 어노테이션을 붙인다. 보통은 그정도로만 사용해서 상세하게 트랜잭션에 대해 공부해야 한다는 생각을 하지 않는다. 실무에서도 프로젝트에서도 일반적으로 트랜잭션 설정값을 거의 안쓰거나, 보통은 설정값으로 readOnly 정도만 사용하는 경우가 많다. 하지만 대용량 동기화, 배치 등을 진행 할때 트랜잭션 관련 설정을 하게 되는 경우가 있다. 그럼 관련된 설정이나 설명을 봐도 명확하게 이해가 되지 않기도 한다. 또한, 개발자 기술 면접에서도 아래와 같이 질문 하는 경우도 다수 있다. 나도 면접 시에 답변을 한 적이 몇번 있다. 트랜잭션 .. 2021. 6. 4. 알아도 어려운 트랜잭션 개념정리 트랜잭션은 백엔드 개발자라면 제대로 알고 있어야 하는 개념이다. 간단한 서비스만 개발한다면 덜 중요하게 느껴지기도 하겠지만 복잡한 서비스를 개발하고 운영을 하다보면 중요성을 느끼게 된다. 대용량 데이터 동기화 등을 처리하다 보면 트랙잭션을 어떻게 처리 하느냐에 따라 데이터의 정합성 등에 영향을 주게 된다. 단건이 아닌 여러건의 배치를 진행하다 보면 트랜잭션으로 인해 단건(나는 각 처리 단위별로 롤백되게 하고자 했었음)이 아닌 전체가 롤백되어 서비스 오픈 전 테스트를 하다 놀란적이 있기도 했다. 이 때 관련 설정을 보고 다양한 테스트를 하면서 내용을 배우기도 했다. 참고로 정보처리기사 등 자격증을 준비하다보면 필수적으로 알아야하는 문제로 나오는 개념이기도 하다. 문제를 풀다보면 가끔 헷갈려서 잘못된 답을 .. 2021. 6. 4. Optional 제대로 알기, 면접 대비! (+간단 실무 코드 예시) 프로그래밍을 하다보면 null 처리를 필수적으로 하게 된다. 기존에는 null 체크를 해서 Null이 아닌 경우 뒤의 로직으로 넘어가게 분기처리를 하는 형태로 작업을 하게 된다. 이러한 null을 처리하기 위해 자바 8 이후 부터는 옵셔널 Optional을 사용한다. 옵셔널을 상세하게는 아니여도 다른 사람의 코드를 보면서 이런식으로 쓴다고는 알고는 있지만, 남에게 설명할 정도는 아니라면 면접 대비를 한다 생각하고, 옵셔널에 대해 상세하게 알아보도록 하자. 신입 개발자가 optional을 제대로 쓰고 알고 있다면 괜찮아 보인다는 선임의 이야기가 있었다. (뭐 사람마다 다를 수 있지만) 나도 이 기회에 제대로 알아봐야지 참고로 Optional을 사용하기 위해서는 자바 버전 8 이상을 사용하고 있어야 한다. .. 2021. 6. 3. Mac java 여러 버전 설치 맥에 여러 프로젝트를 실행하다 보면 해당 프로젝트에 맞는 java를 설치해야 하는 경우가 있다. 그런 경우 아래와 같은 순서로 기존 설치된 자바 버전 이외에도 다른 버전을 설치 할 수 있다. 오늘은 brew를 이용해서 설치를 해보자. brew가 설치되어 있지 않다면 아래 명령어를 활용하여 설치하자. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" macOS용 패키지관리자 Homebrew가 궁금하다면 아래 링크에 들어가 봐도 좋다. https://brew.sh/index_ko 저장소 연결하는 명령어 brew tap adoptopenjdk/openjdk ~ master* ❯ brew t.. 2021. 5. 26. 알고는 써야지! 기본 spring annotation 종류 스프링을 사용하다 보면 메서드나 클래스, 변수 위에 @ 이 붙은 것들을 보게 된다. 안쓰면 제대로 안 돌아가서 다른 사람 코드를 보고 처음에는 쓰게 되는데 막상 이 annotation이 뭔지 물어보면 대답을 명확하게 하지 못하는 경우도 간혹 있다. 쓸꺼면 알고 쓰자! 사실 면접 볼때 나의 github 소스코드를 보다가 면접관이 이 어노테이션은 뭔지 알고 있냐고 물어본적이 있어서 대충 대답한 기억이 있어서 정리해봤다. 코드를 쓰려면 제대로 알고 써야 저런 당황스러운 경험을 하지 않을 수 있다. 나만 모를수도 있지만 이런게 있구나 하면서 한번 정리하면 좋을 것 같다. 기본중의 기본 어노테이션만 정리해봤다. annotation이란? 사전적 의미로, 주석이라는 뜻이다. @를 이용하여 자바코드에 추가하여 의미를 .. 2021. 5. 17. Model 2 방식과 스프링 MVC 모델 2 방식은 흔히 MVC 구조를 응용한 방식이라고 하는데, 핵심은 '화면과 데이터 처리를 분리해서 재사용이 가능하도록 하는 구조' 모델 2 패턴의 이해 모델(Model) : 데이터 혹은 데이터를 처리하는 영역 뷰(View) : 결과 화면을 만들어 내는데 사용하는 자원 컨트롤러(Controller) : 웹의 요청(request)을 처리하는 존재로 뷰와 모델 사이의 중간 통신 역할 모델2 에서 모든 요청은 기본적으로 컨트롤러를 호출 / 컨트롤러는 자신을 호출하는 특정한 URI 경로를 가지고 있으며, 과거에는 주로 호출 시에 마지막 확장자를 *.do 등을 이용하는 방식을 많이 사용 모델 2 방식의 장점 개발자와 웹 퍼블리셔의 영역을 분리 가능 컨트롤러의 URL을 통해서 뷰를 제어하기 때문에 뷰의 교체나 변.. 2021. 5. 14. 스프링 MVC의 주요 구성 요소 스프링 MVC의 주요 구성 요소 DispatcherServlet 클라이언트의 요청을 전달받아 컨트롤러에게 클라이언트의 요청을 전달하고 컨트롤러가 리턴한 결과 값을 View에 전달하여 알맞은 응답을 생성하도록 한다. front controller와 동일 클라이언트의 요청을 중앙에서 처리하는 스프링 MVC의 핵심 구성요소 web.xml에 한 개 이상의 DispatcherServlet을 설정 각 DispatcherServlet은 한 개의 WebApplicationContext를 갖게 된다. HandlerMapping 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지를 결정한다. 컨트롤러(Controller) 클라이언트의 요청을 처리한 뒤, 그 그결과를 DispatcherServlet에게 알려준다. 스트럿츠의.. 2021. 5. 14. 이전 1 2 3 4 5 ··· 8 다음 반응형