응애개발자
article thumbnail
영속성 관리
Spring/JPA 2023. 7. 10. 01:38

엔티티 매니저는 엔티티를 CRUD 하는 등 엔티티와 관련된 모든 일을 처리한다. 개발자는 엔티티 매니저를 가상의 DB로 생각하면 된다. 1. 엔티티 매니저 팩토리와 엔티티 매니저 일반적으로 EntityManagerFactory는 하나만 생성한다. Persistence.createEntity~를 호출하면 밑의 정보를 바탕으로 emf를 생성한다. 이제부터 필요할 때마다 엔티티 매니저를 생성하면 된다. 엔티티 매니저 팩토리는 한 개만 만들어서 애플리케이션 전체에서 공유하도록 설계한다. 그리고 엔티티 매니저 팩토리는 여러 스레드가 동시에 접근해도 안전하므로 서로 다른 스레드 간에 공유해도 되지만, 엔티티 매니저는 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 스레드 간에 절대 공유하면 안 된다. JPA..

article thumbnail
JPA 시작
Spring/JPA 2023. 7. 9. 15:43

1. 이클립스 설치와 프로젝트 불러오기 이클립스 설치 자바 애플리케이션을 동작하기 위한 이클립스 IDE를 설치하자. 2020-06 R | Eclipse Packages 444 MB 4,652 DOWNLOADS The Modeling package provides tools and runtimes for building model-based applications. You can use it to graphically design domain models, to leverage those models at design time by creating and editing dynamic instances, to collabo www.eclipse.org 예제 프로젝트 불러오기 이클립스에서 예제 프로젝트를 불러..

article thumbnail
JPA란 무엇인가?
Spring/JPA 2023. 7. 9. 12:52

JPA는 자바 진영의 ORM 기술 표준이다. ORM이란? ORM은 이름 그대로 객체와 관계형 DB를 매핑한다는 뜻이다. ORM 프레임 워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. 예를 들어 개발자가 객체를 저장할 때 INSERT SQL을 직접 작성하는 것이 아닌 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 된다. 그러면 ORM 프레임워크가 적절한 INSERT SQL을 생성해서 DB에 객체를 저장해준다. 객체 저장 ex)jpa.persist(member); //저장 객체 조회 ex) Member member = jpa.find(memberId); //조회 어느 정도 성숙한 객체지향 언어에는 대부분 ORM 프레임워크들이 있는데 단순히 객체 하나를 C..

article thumbnail
JPA 패러다임의 불일치
Spring/JPA 2023. 7. 9. 01:06

애플리케이션이 발전하며 그 내부 복잡성도 증가, 그래서 현대의 복잡한 애플리케이션은 대부분 객체지향 언어로 개발한다. 문제는 도메인 모델을 저장할때 발생한다. 예를들어 회원 객체를 저장해야 하는데 회원 객체가 팀 객체를 참조하고 있다면, 회원 객체를 저장할 때 팀 객체도 함께 저장해야 한다. 단순히 회원 객체만 저장하면 참조하는 팀 객체를 잃어버리는 문제를 발생한다. 현실적인 대안은 관계형 DB에 객체를 저장하는 것인데, 객체와 관계형 DB는 지향하는 목적이 서로 다르므로 둘의 기능과 표현 방법도 다르다. 이것을 객체와 관계형 DB의 패러다임 불일치 문제라 한다. 따라서 객체 구조를 테이블 구조에 저장하는 데는 한계가 발생한다. 1.상속 객체는 상속이라는 기능을 갖고 있지만 테이블은 상속 기능이 없다. ..