728x90

Programming 33

[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

HTTP

HTTP (Hyper Text Transfer Protocol)이 뭐냐? HTTP는 웹에서 데이터를 주고받는 프로토콜(데이터를 교환하기 위한 통신규칙)이다. 이게 말은 하이퍼텍스트 전송용같지만 실제론 HTML, XML, JSON, Js 등 다양한 것을 전송가능하고 메시지를 주고받는 형태의 통신방법이다. (Request -> Response) HTTP Method HTTP 요청을 특정하는 메소드가 8가지 있다. 그중 가장 많이쓰이고 핵심적인 GET, POST, PUT, DELETE를 살펴보자. CRUD 멱등성 안정성 Path Variable Query Parameter Data body GET 리소스 취득 R O O O O X POST 리소스 생성, 추가 C X X O △ O PUT 리소스 갱신, 생성 C..

Programming/Web 2021.06.20

REST API

게을러서 맨날 포스팅해야지 생각만하고 안하던 포스팅 드디어 다시 시작합니다... 사실 포스팅은 나중에 복습할때 올리고 공부중인 강의만 먼저 쭉 들으려했으나, 듣다보니 앞부분이 기억이 1도안나는 사태 발생해서 쓰는것이기두함;ㅎㅋ REST 란 REST(Representational State Transfer)가 뭐냐.. 직역하자면 '자원의 상태전달'을 하는 네트워크 아키텍처 라고함 이에 해당하는 6가지 아키텍처 조건이 있는데 이 6가지를 잘 지켰냐를 기준으로 REST API다! 혹은 RESTFUL하다! 라고 판단한다. 1. Client, Server 클라이언트와 서버가 서로 독립적으로 분리가 되어있는가!! 이건 머 딱히 추가적인 설명이 필요가 없을것같다. 안정적인 사용이나 운영측면에서 당연한 이야기이지 않을..

Programming/Web 2021.06.20

[Java 기초] 형변환과 오버라이딩 메서드 / 다형성

손으로 똥을싸본적이 있으신가요? 저는 있습니다. 갑작스럽게 개발자가 되고난 이후부터이죠 허허. 제손으로 큰똥을싸고 관제에 울리는 알람을 보면 식은땀이 존나나요 진짜~ㅋㅋㅋ 아무튼 잡소리 치우고 어찌보면 당연한건데 생각하면 헷갈리는것들 (지극히 주관적) 인거 적어보자 형변환시에 오버라이딩 메서드 호출 Person라는 클래스를 상속받은 Child라는 클래스가 있다고 가정해보자. Person는 haveLunch() 라는 메서드를 가지고 있고 child는 이 메서드를 오버라이딩한다. 자 그럼 여기서 문제! Person person1 = new Child(); person1.haveLunch(); 위처럼 instance는 Child로 생성되지만 Person으로 형변환된 객체 person1의 haveLunch 메서..

Programming/Java 2021.04.28

[Java기초] 상속에서 클래스 생성 과정과 형변환

클래스 생성 과정 상속받은 클래스의 생성자를 생성할때 상위클래스의 생성자를 호출한다. 즉, 하위클래스가 생성이 될때 먼저 상위클래스가 생성된다는것! 상속받은 클래스에선 상위클래스의 생성자를 따로 호출한다는등의 표현이 보이지 않아도 컴파일 과정에서 컴파일러에 의해 자동적으로 이뤄진다. (물론, super를 이용해 따로 표현하는것도 가능하다.) // 예시코드 public class Customer { public Customer() { } } public class VIPCustomer extends Customer { public VIPCustomer() { // VIPCustomer 객체 생성시 컴파일러가 자동적으로 Customer생성자를 호출하고 VIPCustomer 객체를 생성함 // super() ..

Programming/Java 2021.04.25
728x90