들어가며 이전 글까지 Oracle cloud 환경에 기존 스프링 부트 프로젝트를 배포해보았다. 인스턴스 생성부터 배포까지 성공적이었지만 아직 기존 프로젝트의 환경은 aws의 s3, rds 를 바라보고있었다. 이제부터 이 부분을 바꿔본다. Comehear 프로젝트는 처음에 말했다싶이 Jpa 를 활용한 스프링 부트 프로젝트였다. Jpa를 공부할 당시 실무에 적용해보고싶은 마음에 공모전에서 사용하게 되었는데 사용할 당시에도 mybatis를 쓰지않고 객체 지향적으로 개발을 하는 것 자체가 너무나 신기하고 재밌는 경험이었다. 이번에 클라우드 환경을 이전하면서 Jpa의 매력에 대해 한번 더 빠지게 되었다. RDS > ADW 기존 AWS RDS(Relational Database Service)를 사용하던 것에서 O..
## Proxy 프록시 em.find() // DB를 통해 실제 엔티티 객체 조회 em.getReference() // DB 조회를 미루는 가짜(프록시) 엔티티 객체 조회 - 프록시 객체를 초기화 할 때 프록시 객체가 실제 엔티티로 바뀌는 것이 아니라 초기화되면 프록시 객체를 통해서 실제 엔티티에 접근 가능. - 프록시 객체는 처음 사용할 때 한 번만 초기화. - 프록시 ≠ 엔티티. - instanceOf 사용. (객체와 비교) - 프록시 객체는 원본 엔티티를 상속받음 - 영속성 컨텍스트에 이미 엔티티가 존재하면 프록시를 따로 반환하지 않음 (getRefer 해도 프록시가 아닌 엔티티 반환) - 프록시 먼저 호출하고, 엔티티를 호출하면 엔티티도 프록시를 반환함 - 영속성 컨텍스트를 날리면( em.deta..
** Transaction 안에서 하는 것이 중요 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); //do something tx.commit(); em.close(); emf.close(); @Entity //@Table(name = "mbr") // Member 객체를 mbr 테이블에 매핑 public class Member { @Id // primary key // 값 직접 할당 //@GeneratedValue // 값 자동 할당 p..
JPA ? - Java Persistence API - 자바 진영의 ORM 기술 표준 - 기술명세 ORM ? - Object-Relation Mapping - 객체는 객체대로, DB는 DB대로 - SQL Mapper 로 직접 query를 만들어 DB조회 > mybatis - 객체와 DB의 데이터를 매핑해서 query 자동 생성 > JPA Hibernate ? - JPA의 구현체 - DataNucleus, EclipseLink 등 다른 구현체도 존재. Spring Data JPA ? - JPA를 쉽게 사용하기 위해 스프링에서 제공하는 프레임워크 아래는 유명한 개념도 1. Application 2.1 JPA (Raw JPA 사용) 2.2 Spring Data JPA (Repository 사용) > JPA 3..
개발자로 일하면서 거의 대부분의 프로젝트는 mybtis를 사용하여 개발했다 JPA는 겉 핥기식으로 토이프로젝트 정도만 진행해보았다 최근 이직 준비를 하면서 JPA를 사용,요구하는 회사가 많아졌다는걸 깨달았다. 물론 현재 회사에서도 JPA를 사용하진 않는다 JPA를 사용해보지 않았기에, 아무래도 이직 준비할때 JPA를 사용하는 회사들은 선택권에서 제외됐다. (사실 JPA를 사용하는 곳도 지원은 해봤지만 면접에서 JPA에 대한 이해도가 높지 않아 좋은 결과를 맺긴 힘들었다.) 더 효율적인 개발을 위해 단단한 내 자신을 만들기 위해 그렇게 JPA 공부의 서막이 올랐다. 내돈내산으로 김영한님의 JPA 강의를 인프런에서 듣기 시작했고 구글링으로 많은 대단한 개발자분들의 도움을 받을 예정이다. 제대로된 정리 글을 ..