본문 바로가기

전체 글

(77)
[TIL 2022-2-11] JPA 영속성 콘텍스트(Persistence Context) 영속성 콘텍스트 - 엔티티를 영구 저장하는 환경. 왜 영구라는 단어를 쓰는지는 아직 안와닫는 것 같다. 지금 생각은 하나의 트랜잭션이 끝날 때까지 조회, 수정, 생성된 엔티티 객체를 관리하는 공간 정도로 이해된다. (아니면 엔티티를 영구 저장하는(역할을 관리하는) 환경은 아닐까 추측해본다) - persist() 메소드는 엔티티객체를 영속화(영속성 컨텍스트에 저장)하는 역할 - 엔티티 매니저가 생성되면 그안에 영속성 콘텍스트와 1:1로 생성(스프링에선 다르게 동작) 스프링에서 @Transactional 를 통해 트랜잭션을 관리하는데 이렇게 설정된 메소드안에서는 엔티티 매니저가 서로 다르더라도 같은영속성 컨텍스트를 공유한다.(엔티티 메니저 객체:영속성 컨텍스트 가 1:1 이 아니라 N:1) https://w..
[TIL 2022-2-10]JPA 기본, 피보나치 EntityManagerFactory EntityManagerFactory는 이름 그대로 EntityManger를 생산하는 공장과 같은 역할을 한다. Thread-safety 하기 때문에 하나만 생성해서 애플리케이션 전체에서 공유하는 방식으로 사용한다. EntityManager EntityManager 또한 이름그대로 엔티티를 관리하는 객체이다. EntityManagerFactory와는 다르게 쓰레드 공유에 안전하지 않기 때문에 트랜잭션마다 새로운 EntityManger를 사용해 처리한다. 아래 코드를 보면 EntityManagerFactory를 통해 EntityManager를 생성하고 EntityManager를 통해 트랜잭션과 영속성 컨텍스트를 관리하는 역할을 하는 것을 볼 수 있다. 스프링에서는 En..
[TIL 2022-2-8] HTTP 헤더 공부 HTTP 헤더 - 헤더 분류 1999RFC RFC2616(폐기됨) General 헤더 - 메세지 전체에 적용되는 정보 ex) Connection: close Request 헤더 - 요청 정보 Response 헤더 - 응답 정보 Entity 헤더 - 엔티티 바디 정보 ex) Content-Type: text/html 등 엔티티 본문의 데이터를 해석할 수 있는 정보 제공 RFC723x 엔티티 -> 표현(Representation)으로 변경됐다. 메시지 본문 = 페이로드(payload) 이다. 메시지 본문에 표현 데이터가 포함된다. 메시지 본문을 통해 표현 데이터를 전달한다. 표현 헤더는 표현 데이터를 해석할 수 있게하기위해 데이터 유형, 길이, 압충 정보 등을 전달하기 위해 존재한다.(REST API 의 R..
[TIL 2022-2-7]JPA 공부 실용편1 끝!! JPA - 도메인 모델에 대하여 https://tech.junhabaek.net/%EB%B0%B1%EC%97%94%EB%93%9C-%EC%84%9C%EB%B2%84-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-domain-layer1-domain-layer%EC%99%80-ddd-e97a7587a7b0 백엔드 서버 아키텍처 — Domain Layer1. Domain Layer와 DDD 도메인 레이어의 유형, DDD의 개요 tech.junhabaek.net 도메인을 추상적으로 표현하고 DDD에 대해 여러 비유들이 있는데 너무 추상적이고 이해가 잘 가지않았다. 일단 지금 내가 생각하는 도메인 모델 패턴은 도메인 객체가 행위까지 포함하는 것을 말하는 것 같다. - Entity를 그대로 모..
[TIL 2022-2-5] JPA 공부 양방향 연관관계에서는 연관관계의 주인 양방향 연관관계에서는 연관관계의 주인을 정해야한다. 일대다 관계에서는 다에 무조건 외래 키가 존재하게된다. 테이블, 컬럼명 테이블명과 컬럼명은 보통 대문자 + _ 또는 소문자 + _ 을 사용한다. @Embeddable, @Embedded Entity에서 어떤 정보를 표현할 때, 연관되어있는 프로퍼티들을 클래스로 분리하여 관리할 수 있다. 분리한 클래스는 @Embeddable 어노테이션을 클래스 레벨에, Entity에는 @Embedded를 필드에 지정해주므로써 구현한다. @Entity 에 @Setter 대신에 비지니스 메소드를 만들어서 사용할 것 로직이 복잡해지고 세터를 통해 데이터를 변경하는 것을 여러 곳에서 하다보면 문제가 발생했을 때 추적이 매우 힘들어진다. 데이..
[TIL 2022-2-4] Spring JPA 공부 시작!! Spring jPA 공부를 시작했다. 김영한님에 말에 따라 기본개념강의를 건너 뛰고 [실전! 스프링 부트와 JPA 활용1] 강의를 듣기 시작했다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1/dashboard 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런 | 강의 실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게 활용해야 하는지 이해할 수 있습니다., - 강 www.inflearn.com 근데 내생각보다 더 기본 설명을 안하고 넘어가는 경우가 ..
[TIL 2022-2-2] 로그인 페이지 뷰 구현 + 생성자에 따른 @ModelAttribute의 동작 방법 로그인 페이지 뷰 구현 부트스트랩과 Thymeleaf를 활용해서 로그인, 회원가입, 계정찾기 뷰를 미리 구현했다. 아직 Thymeleaf 에 모델을 적용하는 코든는 빈 부분들이 있지만 개발하면서 수정해 나갈 예정이다. 처음엔 진짜 현업에서처럼 동작하는 로그인 시스템을 만드는게 막막했는데, 아직 정말 많이 부족하지만 지난 20일동안 공부하면서 어떤 것들을 공부해야하고 알아야가야하는지 조금은 알게된 것 같다. 지금은 초라한 프로젝트지만 얼른 공부해나가면서 하나둘씩 발전시켜나가고 싶다!!! 생성자에 따른 @ModelAttribute의 동작 방법 Lombok의 @NoArgsContructor 와 @AllArgsConstructor 를 클래스에 명시하고 컴파일하면 각각 매개변수가 없는 생성자와 모든 멤버변수를 매..
[TIL 2022-2-1] Spring MVC 공부 @ModelAttribute와 Model SpringMVC에서 @ModelAttribute 를 통해 쿼리파라미터와 폼데이터를 개발자가 만든 객체로 바인딩할 수 있다. 이 때 Model 객체에 값을 넣어주지 않아도, @ModelAttribute를 통해 넘어오는 객체를 자동으로 넣어서 뷰로 전달해 준다. 그리고 @Controller 의 컨트롤러 메소드는 매개변수로 객체가 들어오면 @ModelAttribute가 디폴트로 작동하기 때문에 생략해 줄 수 있다. 이때 뷰에서 사용되는 모델의 이름은 매개변수로 들어오는 객체의 타입에서 첫글자를 소문자로 바꿔 사용한다. @PostMapping("/add") public String v1(@ModelAttribute("item") Item item,Model model)..