본문 바로가기

Spring/JPA8

[JPA] 준영속 엔티티를 변경하는 방법 - 변경 감지 / 병합(Merge) * 인프런 김영한님 강의와 책을 보고 정리한 내용입니다 준영속 엔티티 Persistence context가 관리하지 않는 엔티티 영속성 컨텍스트가 제공하는 기능(1차 캐시, 쓰기 지연, 변경 감지, 지연 로딩 등)을 사용할 수 없는 엔티티 영속성 컨텍스트의 관리를 한번 받았으므로 identifier는 가지고 있음 영속 엔티티를 준영속 엔티티로 만드는 방법 em.detach() : 영속성 컨텍스트 안의 1차 cache, 쓰기 지연 SQL 저장소에서의 해당 엔티티 정보 제거 em.clear() : 영속성 컨텍스트 안에 있는 모든 정보를 초기화 em.close() : 영속성 컨텍스트 종료 즉, 준영속 엔티티 member가 존재한다고 가정했을 때, member.setName("stody"); 영속 엔티티라면 D.. 2022. 2. 15.
Spring Boot Repository EntityManager / EntityManagerFactory 엔티티매니저 / 엔티티매니저팩토리 JPA를 시작하기 위해서는 엔티티 매니저 팩토리를 생성 후 앤티티 매니저 팩토리가 엔티티 매니저를 생성하여야 한다 앤티티 매니저 팩토리 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("test") application.yml의 환경설정 정보를 가지고 entityManagerFactory를 생성 (통상적으로 META_INF/persistence.xml에서 persistence-unit 이름이 test와 같은 것을 찾아서 생성) JPA 동작 위한 기반 객체 생성 and 데이터베이스 커넥션 풀을 생성 -> 작업과 비용이 크므로 어플리케이션 전체에서 한번만 생성하는 것이 좋음 엔티티 매니저 생성 EntityManager em = emm.. 2021. 12. 27.
[JPA] JPA 세팅 및 MySQL 8 아마존 RDS 연결하기 by Spring Boot build.gradle 에 JPA / MySQL 의존성 세팅하기 방법은 여러가지가 있겠지만 내가 시도한 방법은 두가지다 > Spring Boot Initializer로 작업 환경 만들 때 추가하기 https://start.spring.io/ 이곳에서 웹을 통해서 스프링 프로젝트 생성이 가능한데 이때, jpa를 추가한다 > Maven Repository에서 가져와 추가하기 https://mvnrepository.com/ 에서 스프링에 필요한 라이브러리들을 가져와 추가할 수 있다. JPA도 여기서 검색하면 나온다. build.gradle 파일에서 mavenCentral()이라고 쓰여있는 부분이 JPA 상세 코드 혹은 패키지가 존재하는 사이트 서버와의 인터페이스 (통로) 역할을 하는 메서드가 아닐까 싶다 re.. 2021. 9. 10.
[JPA] JPA 등장 배경 + ORM에 대한 이야기 JPA 등장 배경 JDBC API로 언제까지 SQL문 짜고 업데이트 사항 발생하면 하나씩 DAO에 가서 수정할래? JAVA에서는 JDBC API를 이용하여 Web Application에서 DB로 부터 data를 추출해서 가져와야 했다. 직접 SQL을 작성한 후 JDBC API를 이용하여 SQL문을 전달하는 방식이다. 아래는 JDBC template을 활용하여 상품 DB와 상품 Service 코드 사이에서 DB를 가져오고 매핑해주는 DAO 계층이 담긴 class의 메서드 중 하나이다. public List getProductHomeTodayClass(){ String query = "SELECT OnlineClass.idx, thumbnail, title FROM OnlineClass\n" + "WHERE.. 2021. 9. 10.