목록분류 전체보기 (138)
DOing
➰ 플러시 : 영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는 것이다. : DB 트랜잭션이 커밋되면 플러시가 자동으로 발생된다. : 플러시가 발생하면 변경감지(Dirty Checking), 수정된 엔티티를 쓰기지연SQL저장소에 등록하고 쓰기지연SQL저장소의 쿼리를 DB에 전송한다. 쓰기지연SQL저장소에는 등록/수정/삭제 쿼리등 모두 담겨 있다. 그걸 한번에 보낸다. : 플러시는 영속성 컨텍스트를 비우는 것이 아니다!!⭐⭐ : 영속성 컨텍스트의 변경 내용을 데이터베이스에 동기화 하는 것이다.⭐⭐ : 보통 영속성 컨텍스트 주기와 트랜잭션 주기를 맞춘다. 트랜잭션이라는 작업단위가 중요하다 -> 커밋직전에만 동기화하면 된다!⭐ ➰ 영속성 컨텍스트를 플러시하는 방법 1. em.flush() : 직접 호출 - ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/eqwbsr/btq9zjKBkuU/HcNgY4BIXjRINkWKjFfDN0/img.png)
영속성 컨텍스트의 이점 1. 1차 캐시 2. 동일성(identity) 보장 3. 트랜잭션을 지원하는 쓰기 지연 (transactional write-behind) 4. 변경 감지(Dirty Checking) 5. 지연 로딩(Lazy Loading) 1. 1차 캐시에서 조회 1차 캐시에 Map이 있고 @id가 키이고 Entity가 값이다. DB를 바로 조회하는 것이 아니고 1차 캐시에 있는지를 확인한다. 만약 1차 캐시에 있다면 1차캐시에서 조회한다. 1-2. 1차캐시에 없다면, DB조회 * 참고 : Entity Manager(영속성 컨텍스트)는 DB트랜잭션단위로 만든다. JPA는 Entity를 조회만 하면 무조건 영속성 컨텍스트에 올린다. 2. 영속 엔티티의 동일성 보장 Member a = em.find..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/kwUvW/btq9DuRK0VW/6aKTNNKa4gmKBAQIDdtR50/img.png)
영속성 컨텍스트? : 논리적인 개념으로 눈에 보이지 않는다. : 엔티티매니저를 통해서 영속성 컨텍스트에 접근한다. : 엔티티를 영속화한다. 엔티티 생명주기 1. 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); 2. 영속(managed) : 영속성 컨텍스트에 관리되는 상태 // 객체를 생성한 상태(비영속) Member member = new Member(); member.setId("member1"); member.setUsername(“회원1”); EntityManager em = emf.createEntityManager..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/MI545/btq9yNq7vC2/gmmHEpVGKMgYyeVGBFCK2K/img.png)
프로젝트에 연관관계를 적용하려고 하니, 즉시 로딩과 지연로딩의 문제와 cascade 문제가 연달아 터졌다. 이 둘을 제대로 이해하기 위해서 프록시 개념을 이해해보고 넘어가려고 한다. 👻 프록시 : 가짜 Entity 객체 1. 실제 Entity를 상속받아 만들어지기 때문에 겉모양은 실제 Entity와 같지만, 안에가 비어있다. : 상속은 하이버네이트가 내부적으로 프록시 라이브러리를 써서 만들어준다. 2. 사용자 입장에서는 진짜 객체인지, 프록시 객체인지 구분하지 않고 사용하면 된다.(이론상) 3. 프록시 객체에는 target이라는 실제 객체의 참조를 보관하고 있다. 그래서 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드 호출 👻 프록시가 실제 객체를 호출하는 과정 1. 사용자가 member.get..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bw5CXo/btq9zFThOl2/dmVX7yxv27uc1GvP2Ou4G1/img.png)
8080포트->80포트로 sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 --- 실행 java -jar JAR파일명.jar --- SSH 접속 끊겨도 계속 실행되게 하기 nohup java -jar JAR파일명.jar & : nohup은 "no hang up"(끊지마!)의 약자이다. : 말그대로 내가 세션과 연결을 종료해도 지금 실행시킨 프로그램을 종료하지 마! 라는 것이다. : & 를 프로그램 실행시에 명령어 맨 끝에 붙여주면 해당 프로그램이 백그라운드로 실행시킨다. : nohup으로 실행시키면 " nohup: appending output to `nohup.out` " 메세지와 함께 해당 프로..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/kwC0f/btq8GrcpIJ7/ZoKFMaDTAUrbZLFvn8aiS1/img.png)
🌱 ORM 이란? ORM 이란 Object-Relational Mapping 의 약자로, 이름 그대로 객체(Object)와 관계형 데이터(Relational data) 를 매핑하기 위한 기술이다. 이러한 매핑이 필요한 이유는 객체 지향 언어과 관계형 데이터베이스사이의 패러다임 불일치가 있기때문이다. 이 둘 간의 패러다임 불일치 때문에 개발자는 더 많은 코드를 작성해야 하며, 이는 반복적이고 실수하기 쉬운 작업이 된다. 그렇기 때문에 개발자는 객체지향적인 설계에 집중할 수 없게 된다. ORM이 바로 이러한 문제를 해결해 준다. 🌱 패러다임 불일치 객체 지향 프로그래밍과 관계형 데이터베이스 사이의 데이터 표현 방식이 달라서 생기는 문제를 패러다임 불일치라고 한다. 패러다임 불일치가 일어나는 이유는 애초에 이..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/toZeV/btq8IDiIuqV/LIxajtCyrKJD8NlYLlnwa0/img.png)
🐛 테스트의 중요성 : 버그 버그란, 소프트웨어가 예상하지 못한 결과를 내는 것을 말한다.(위키백과) 서비스 중에 버그가 발생하게되면 사용자들에게 불편함과 회사의 악영향을 끼칠 수 있기때문에 서비스가 릴리즈 되기전, 즉 코드가 배포되기 전에 버그를 최대한 찾아내는 것이 중요하다. 이런 버그를 찾아내기 위해 다양한 테스트가 존재한다. 테스트 종류는 여러가지 분류기준에 따라서 다양하게 이름 붙여질 수 있다. 🐛 테스트의 종류 : 블랙박스 vs 화이트 박스 1. 블랙박스 테스트 블랙박스 테스팅이란 소프트웨어 내부 구조나 동작원리를 모르는 블랙박스와 같은 상태에서, 즉 웹 서비스의 사용자 입장에서 동작을 검사하는 테스트 방식이다. 1) 장점 : 개발자부터 디자이너, 사장님까지 누구나 테스트 가능하다. 2) 단점..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/re1DK/btq8wyhmtOw/Thai2Wayjnu9xrdq159IW0/img.png)
[ 기획 배경 ] 저의 첫 SpringBoot 프로젝트였기 때문에 기본에 충실하고자 하였습니다. 웹 프로젝트의 입문이자 기본이라고 할 수 있는 게시판 CRUD를 구현하면서 SpringBoot에 대한 감을 잡는 것이 이번 프로젝트의 첫 목표였습니다. 추가적으로 본격적인 팀프로젝트에 들어가기 전에 개발 프로세스를 익숙해지는 것이 두번째 목표였습니다. [ 초기 설계 과정 ] 1. 와이어프레임 : Figma를 사용하여 제작하였습니다. : 기존 프로젝트들에서 사용하던 카카오오븐의 한계를 느끼고 Figma를 배워 적용하였습니다. 2. API설계 더보기 [ 완성작 ] 개발 관련된 게시글을 조회, 작성, 수정, 삭제할 수 있습니다. [ 배운점 ] 1. 개발 프로세스 익숙해지기 본격적인 팀프로젝트가 들어가기 전에 개발 ..