728x90

Programming/Spring 7

[Spring JPA] Casacade(영속성 전이), 고아제거속성

영속성 전이는 연관관계에 있는 entity에 대하여, 영속성을 전파시키는 것이다. 예시를 보며 이해보자 A entity와 B entity가 OnetoOne 연관관계가 있다고 할때, A a = new A(); B b = new b(); a.setB(b) aRepository.save(a); 이런 코드가 있다면 오류가 발생할것이다. 왜냐면 a, b가 모두 비영속상태인 상태에서 onetoone 관계를 맺고 저장을 시켜버리기 때문. 실제 DB나 영속성 컨텍스트엔 a,b가 존재하지 않는상태이므로 연관관계를 맺어 저장시키면 transient한 object를 저장해버린다며 오류메시지를 던진다 이때 아래처럼 A entity내의 B에 CascadeType= PERSIST 를 지정해버리면, A의 persist(저장, in..

Programming/Spring 2022.06.22

[Spring JPA] Transactional Manager

Transaction의 특성 ACID 1. Atomicity (원자성) : 부분적 성공 허용 X. all or nothing. 내가돈보내는건 됐는데 상대방계좌에 돈이안찍히는건 안되는 이런경우는 X! -> 하나의 트랜잭션으로 묶인곳에서 RuntimeException발생하면 전체 다 커밋되지 않음. -> 하나의 트랜잭션안에서 저장이 여러번 일어나게되면 컨텍스트 내에서만 저장을 수행하고 최종 커밋은 트랜잭션이 종료될때 수행됨 2. Consistency(일관성) : 데이터간의 정합성을 일관성있게 맞춰야함 3. Isolation (독립성) : transaction의 조작은 다른 transaction에 대해 독립적 4. Durability (지속성) : 데이터는 영구적으로 지속되야함. Transaction 사용의 ..

Programming/Spring 2022.05.12

[Spring JPA] Entity lifecycle

4가지의 Entity lifecycle 1. 비영속상태 (new, transient) transient 상태는 entity가 아닌 java object처럼 취급된다. 즉 영속성 컨텍스트에 의해 db와 연결되지 않은 객체들이 이해해당. 2. 영속상태(managed) 해당 entity가 영속성 컨텍스트 내에서 관리되는 경우. 3. 준영속상태(detached) 영속상태에 있던 entity를 비영속상태인 영역으로 꺼내버리는 경우. em의 detach, clear같은 메서드 호출하여 준영속상태로 만들 수 있음. detached된 준영속상태의 entity는 merge를 통해 다시 영속화 시킬수 있음 4. 삭제상태(removed) 말그대로 삭제해버림.(delete쿼리) 영속성에서 삭제되므로 merge해도 다시 영속화..

Programming/Spring 2022.04.25

[Spring JPA] 영속성 컨텍스트

* 혼자서 공부하다 끄적이는 내용이며 정확성 매우 떨어집니다. 틀린것에 대한 지적은 너무나 감사합니다 영속성 컨텍스트 컨텍스트 : 프레임워크에서 컨테이너들이 관리하고 있는 내용. Spring에선 Spring bean들을 loading 및 관리를 스프링 컨텍스트에서 함 영속성(Persistence) : 사라지지 않고 지속적으로 존재하는것. 메모리에 존재하는 데이터는 보통 서비스가 종료되면 사라진다. 보통 영구적 보관을 위해 수행된 서비스는 대부분 파일이나 DB에 저장된다 -> 영속성 컨텍스트 : 데이터를 영속화하는 컨테이너가 영속성 컨텍스트를 사용하여 데이터를 영속화한다. Java에선 일반적으로 META-INF아래 persistence.xml에 영속성 컨텍스트를 설정하여 사용함. 물론 spring boot..

Programming/Spring 2022.04.24

SpringData JPA 기초

JPA에서 DB와 연결되는 JAVA 객체를 Entity 선언으로 구현가능.(ID 설정을 해줘야함-PK역할) 해당 객체는 JpaRepository implementaion한 repository 인터페이스 생성으로 활용이 가능하다. (JpaRepository의 제네릭은 연결되는 JAVA객체, ID타입으로 구성한다) JpaRepository는 일반적 CRUD 기능을 위한 PagingAandSortingRepository, Example활용 CRUD 기능을 위한 QueryByExampleExecutor를 상속받는다. Repository -> CrudRepository -> PagingAndSortingRepository -> JpaRepository QueryByExampleExecutor -> JpaRepos..

Programming/Spring 2022.02.23

[Spring boot] Spring Boot란

Spring boot란 무엇인가! Spring Boot는 프로덕션 제품 수준, 즉 클라이언트에게 서비스를 제공할수 있는 수준의 스프링기반 어플리케이션을 쉽게 만들수 있게 해주는 가이드라인이다. 쉽게 java -jar로 실행하는 자바어플리케이션을 만들수 있다. 따로 Spring구성을 많이 할필요 없이 빠르고 광범위하게 적용할수 있는 환경을 제공해주고 기본값 설정, 공통적인 비기능 제공을 해준다. 말그대로 누구나 쉽게 웹개발 할수있게 스프링에서 미리 틀을 딱 잡아서 제공해주는것! 초간단 예제 초간단 예제 하나만 슥 보자. 우선 Spring initializr를 통해 Spring boot 프로젝트를 생성한다. 이건 뭐 인터넷 치면 정보 수두룩 빽빽. package com.example.demo.controll..

Programming/Spring 2021.06.20

[Spring] Spring MVC

Spring에서 흔히들 사용하는 디자인패턴 혹은 아키텍처인 MVC에대해서 알아봅시다. 1. 디자인패턴 디자인패턴은 이런점에서 발생하는 문제점과 개발의 효율성을 위해 나온 다양한 구조들 중 살아남은 "Best Practice" 라고 생각하면 됩니다. 오늘 살펴볼 Spring MVC 프레임워크도 그러한 "Best Practice"가 통상적으로 굳어진 경우입니다. 2. MVC란? MVC라고 하면 Model, V iew, Controller의 앞글자를 따서 만든 단어입니다. 간단히 설명해보자면 Client의 입장에선 View에 해당하는 화면을 바라보며 조작합니다. 그리고 그 화면에 들어가는 데이터를 구현한 것이 Model입니다. Controller는 중간에서 client와 model 사이를 중개하는 중개자의 역..

Programming/Spring 2021.03.18
728x90