일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- PostgreSQL
- 컨테이너
- docker
- 도커
- 데이터베이스
- ArrayList 길이 확장
- acid
- heap
- 스키마 자동 생성
- JPA
- postgres
- JPA란
- Container
- 자바 동시성
- 싱글톤 동시성
- 권장 PK 전략
- thread safety
- Database
- java
- ArrayList 가변
- ArrayList 소스코드
- transaction
- index
- create-drop
- 트랜잭션
- 멀티스레드 싱글톤
- 로드밸런서
- JPA 장점
- load balancer
- github
- Today
- Total
목록JPA (5)
JS
"객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다." - 조영호(객체지향의 사실과 오해) Member(회원)과 팀(Team) 이 있고, 한 팀에 여러명의 멤버가 속하게 된다고 가정해봅시다. 데이터베이스 테이블의 경우 멤버 테이블에 팀ID를 가지고 있게 될텐데, 같은 형태로 객체 연관관계를 구성하면 데이터를 조회하고 추가하는데 계속 ID를 이용해 참조대상을 찾아야하는 불편함이 생깁니다. 이번 포스팅에서는 그 불편함을 연관관계 매핑을 통해 해결하면서 객체지향적으로 연관관계를 설정하는 방법에 대해 알아보겠습니다. 1. 단방향 매핑 각 멤버는 하나의 팀에 소속될 수 있기 때문에 팀과 멤버의 관계는 1:N 으로 표현할 수 있습니다. 그러므로 멤버 객체에서 소속된 팀 객체를 참조하게끔 연관관계..
이번 포스팅에서는 JPA가 엔티티 객체와 테이블을 어떻게 매핑하는지 알아보겠습니다. 객체와 테이블 매핑 (@Entity, @Table) @Entity @Entity 라는 애노테이션이 붙은 클래스는 JPA가 관리하는 엔티티를 뜻합니다. JPA를 사용해서 테이블과 매핑할 클래스는 필수로 붙여줘야 합니다. 엔티티를 선언할 때는 몇 가지 주의사항이 있는데요. 기본 생성자가 필수입니다. (기본 생성자란, 파라미터가 없는 public 또는 protected 생성자를 뜻합니다.) final 클래스, enum, interface, inner 클래스는 사용이 불가합니다. DB에 저장할 필드에 final 키워드를 사용할 수 없습니다. @Table 엔티티와 매핑할 테이블을 지정한다는 애노테이션이며, name 이라는 속성을 ..
JPA에는 데이터베이스 스키마를 자동으로 생성해주는 기능이 존재합니다. 이 기능은 DDL을 애플리케이션 실행 시점에 자동 생성해줍니다. 당연히 개발환경 에서만 사용이 권장되는 기능이고, 운영환경 에서는 사용하지 않거나 필요에 따라 적절하게 다듬은 뒤 사용해야 합니다. DB 스키마 자동 생성 기능은 데이터베이스 방언을 활용해서 사용하는 데이터베이스에 맞는 적절한 DDL을 생성해줍니다. hibernate.hbm2ddl.auto 속성 create: DROP + CREATE create-drop: create와 같으나 종료 시점에 DROP update: 변경분만 반영 (운영 DB 사용 X, 지우는 건 안되고 업데이트만 가능) validate: 엔티티와 테이블이 정상 매핑되었는 확인 none: 사용하지 않음 해당..
JPA의 Persistence Context(영속성 컨텍스트)란 엔티티를 영구 저장하는 환경입니다. JPA는 엔티티 관리를 위해 여러가지 기능을 제공하는데 그 기반이 되는 것이 바로 영속성 컨텍스트 입니다. (가장 중요) JPA는 엔티티를 데이터베이스가 아닌 엔티티 매니저를 통해 접근 가능한 특정 환경에 저장한 뒤 사용합니다. 이를 이해하기 위해서는 엔티티의 생명주기에 대해 알아야 합니다. 엔티티의 생명주기 엔티티의 생명주기에는 비영속, 영속, 준영속, 삭제 이렇게 4가지가 있습니다. 비영속 (new/transient) 비영속 상태란, 엔티티 객체를 생성은 했지만 영속성 컨텍스트와는 관계가 전혀 없는 완전히 새로운 상태를 뜻합니다. 영속 (managed) 생성한 엔티티 객체를 생성한 뒤 엔티티 매니저를 ..
JPA란 Java Persistence API의 줄임말로 Java 표준 ORM 입니다. ORM (Object-relational mapping) 이란, 객체는 객체대로 객체지향스럽게 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계해서 함께 사용할 수 있도록 중간에서 매핑해주는 도구입니다. JPA는 Java 애플리케이션과 JDBC 사이에서 동작하며, 개발자가 직접 JDBC API를 사용하지 않아도 JPA가 데이터베이스로의 SQL문을 호출하고 결과를 객체로 매핑해줍니다. JPA는 구현체가 아닌 인터페이스의 모음으로 JPA 2.1 표준 명세를 구현한 3가지 구현체가 (Hibernate, EclipseLink, DataNucleus) 존재하며 그중 대표적으로 Hibernate를 대부분 사용합니다. ..