본문 바로가기

전체 글38

[JPA] 엔티티 매핑 엔티티 매핑 JPA를 사용하는 데 가장 중요한 일은 엔티티와 테이블을 정확하게 매핑하는 것이다. 따라서 매핑 어노테이션을 숙지하고 사용해야한다. JPA는 다양한 매핑 어노테이션을 지원하는데 크게 4가지로 분류할 수 있다. -객체와 테이블 매핑: @Entity, @Table -기본 키 매핑: @Id -필드와 컬럼 매핑: @Column -연관관계 매핑: @ManyToOne, @JoinColumn @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야한다. @Entity가 붙은 클래스는 JPA가 관리하는 것으로 엔티티라 부른다. 속성 기능 기본값 name JPA에서 사용할 엔티티 이름을 지정한다. 보통 기본값인 클래스 이름을 사용한다. 만약 다른 패키지에 이름이 같은.. 2020. 9. 4.
[JPA] 영속성 관리 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저 팩토리는 이름 그대로 엔티티 매니저를 만드는 공장이다. 엔티티 팩토리 매니저는 생성 비용이 크기 때문에 한 개만 만들어서 애플리케이션 전체에서 공유하도록 설계되어 있다. 엔티티 팩토리 매니저는Persistence.createEntityManagerFactory("영속 유닛") 을 호출하면 persistence.xml에 있는 정보를 바탕으로 생성된다. 엔티티 매니저 팩토리는 여러 스레드가 동시에 접근해도 안전하지만 엔티티 매니저는 여러 스레드가 동시 접근 시 동시성 문제가 발생하므로 스레드 간에 절대 공유하면 안된다. 엔티티 매니저는 연결이 필요한 시점까지 커넥션을 얻지 않고 보통 트랜잭션을 시작할 때 커넥션을 획득한다. 영속성 컨텍스트란? 영속성 컨텍스.. 2020. 8. 31.
[JPA] JPA 소개 및 시작 JPA란 무엇인가? JPA(Java Persistence API는 자바 진영의 ORM 기술 표준이다 JPA는 애플리케이션과 JDBC 사이에서 동작한다. ORM이란 Object-Relational Mapping 즉 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. 객체를 DB에 저장할 때 SQL을 직접 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 알아서 적절한 SQL을 생성해서 DB에 객체를 저장해준다. 따라서 개발자는 데이터 중심인 관계형 데이터베이스를 사용해도 객체지향 어플리케이션 개발에 집중할 수 있다. JPA는 자바 ORM 기술에 대한 표준 명세다. 쉽게 이야기해서.. 2020. 8. 30.
[JAVA] 스트림으로 데이터 수집 (컬렉터) 컬렉터란 무엇인가? Collector 인터페이스 구현은 스트림의 요소를 어떤 식으로 도출할지 지정한다. collect로 결과를 수집하는 과정을 간단하면서도 유연한 방식으로 정의할 수 있다는 점이 컬렉터의 최대 강점이다. 스트림에 collect를 호출하면 스트림의 요소에 리듀싱 연산이 수행된다. 보통 함수를 요소로 변환 할 때는 컬렉터를 적용하며 최종 결과를 저장하는 자료구조에 값을 누적한다. Collector 인터페이스의 메서드를 어떻게 구현하느냐에 따라 스트림에 어떤 리듀싱 연산을 수행할지 결정하며 Collectors 유틸리티 클래스는 자주 사용하는 컬렉터 인스턴스를 손쉽게 생성할 수 있는 정적 팩토리 메서드를 제공한다. 제공되는 메서드는 크게 세가지로 구분할 수 있다. - 스트림 요소를 하나의 값으로.. 2020. 8. 24.