반응형

전체 글 130

영속성 컨텍스트 (Persistence Context) 란 (2)

플러시는 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영한다. 플러시가 호출되면 1. 변경감지가 동작해서 영속성 컨텍스트 내 모든 엔티티들을 대상으로 스냅샷과 비교해 변경사항을 찾고, 수정된 엔티티들은 UPDATE문을 생성하여 SQL저장소에 등록한다. 2. SQL저장소의 쿼리를 데이터베이스에 전송한다. (등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시하는 방법은 3가지가 있다. 1. 직접 호출 엔티티매니저의 flush 메소드를 호출하는 것으로 테스트, 다른 프레임워크와 JPA를 함께 사용할 때를 제외하곤 거의 사용하지 않는다. 2. 트랜잭션 커밋 시 데이터베이스에 어떤 변경도 없이 트랜잭션만 커밋해서는 아무것도 바뀌는게 없다. 때문에 항상 데이터베이스 커밋 전엔 영속성 컨텍스트의 내용을 flush하..

Back-End/JPA 2018.11.25

영속성 컨텍스트 (Persistence Context) 란 (1)

우리 말로 표현해보자면 엔티티를 영구 저장하는 환경으로 논리적인 개념에 가깝다. 엔티티매니저로 엔티티를 저장하거나 조회하면 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 기본적으로 엔티티매니저가 생성될 때 하나의 영속성 컨텍스트가 만들어지며, 여러 개의 엔티티매니저가 하나의 영속성 컨텍스트에 접근할 수도 있다. persist 메소드를 "회원 엔티티를 저장한다"보다 정확히 얘기하면 "엔티티매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다"로 말할수있다. 엔티티의 생명주기 비영속 (new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 순수한 객체인 상태 영속 (managed) : 영속성 컨텍스트에 저장된 상태, 영속성 컨텍스트에 의해 관리되는 상태 준영속 (detached) : 영속성 ..

Back-End/JPA 2018.11.25

EntityManagerFactory와 EntityManager

EntityManagerFactory (엔티티매니저팩토리)일반적으로 데이터베이스를 하나만 사용하는 애플리케이션은 EntityManagerFactory를 하나만 생성한다. META/INF/persistence.xml 에 설정한 정보를 기반으로 다음과 같은 코드로 생성할 수 있다. EntityManagerFactory emf = Persistence.createEntityManagerFactory(설정한이름); EntityManagerFactory는 EntityManager를 생성하는 Factory클래스로 최초 생성 시 커넥션풀 생성을 포함한 여러 작업들을 수행하기때문에 생성비용이 비싸고, 때문에 애플리케이션 전반적으로 하나의 인스턴스를 공유하도록 설계되어있다.EntityManager (엔티티매니저)엔티티를..

Back-End/JPA 2018.11.23

기본적인 JPA 설정 방법

JPA 구현체로 Hibernate를 사용하기 위해 필요한 핵심 라이브러리가 존재한다.hibernate-core : 하이버네이트 라이브러리hibernate-entitymanager : 하이버네이트가 JPA 구현체로 동작하도록 JPA 표준을 구현한 라이브러리hibernate-jpa-2.1-api : JPA 2.1 표준을 모아둔 라이브러리먼저 pom.xml에 다음과 같이 추가한다.org.hibernate.hibernate-entitymanager.4.3.10.Finalentitymanager를 dependecy 해주면 관련하여 core와 jpa-2.1-api를 함께 dependency로 잡아준다.다음 persistence.xml을 설정한다.persistence.xml 파일은 JPA 사용에 필요한 설정 정보를..

Back-End/JPA 2018.10.03

JPA / ORM 이란

JPA란JPA란 Java Persistence API의 약자로 자바 진영의 표준 ORM 기술이다. ORM이란 Object Relational Mapping의 약자로 객체와 관계형 데이터베이스를 매핑하는 기술을 의미한다. 즉 JPA는 자바의 객체와 관계형 데이터베이스를 매핑하는 표준 기술이다. ORM 프레임워크는 객체 / 관계형 데이터베이스 패러다임의 불일치를 개발자 대신 해결해준다. ORM 프레임워크 상에서는 개발자가 어떤 객체를 저장할 때 직접 INSERT문을 작성할 필요가 없다.객체를 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 프레임워크가 대신 적절한 INSERT문을 생성하여 데이터베이스에 저장해준다. 단순히 SQL만 생성해주는 수준에서부터 패러다임 불일치 문제를 전부 해결해주는 수준까지 ..

Back-End/JPA 2018.10.03

객체 모델과 관계형 데이터베이스 모델 차이

객체 모델과 관계형 데이터베이스 모델은 지향하는 목적이 다르다. (패러다임의 불일치) - 객체지향 언어의 추상화, 상속, 다형성 등의 개념이 관계형 데이터베이스에는 없다.- 관계형 데이터베이스는 데이터 중심으로 구조화되어 있고, 집합적인 사고를 요구한다. 문제는 이 패러다임의 차이를 극복하려고 개발자가 너무 많은 시간과 코드를 소비한다는 점이다. 또한 애플리케이션에서 사용하는 객체를 객체지향 중심으로 설계할수록 이 패러다임의 차이는 커진다. 때문에 객체 모델링은 힘을 잃고 점점 SQL에 의존적인 개발 데이터 중심(DB, 테이블, ..)의 모델로 변해간다. JPA는 이러한 패러다임의 불일치 문제를 해결해주고 개발자가 객체지향 언어에 맞게 정교한 객체 모델링을 유지할 수 있도록 도와준다. ----------..

Back-End/JPA 2018.10.03

Java NIO란

Java NIO에 관하여 좋은 글이 있어 공유합니다.출처 : http://opennote46.tistory.com----------------------------------------------------------------------------------------------------------------------------------------------------------------------------NIO (New Input/Output) vs IO (Input/Output) and NIO.2 in Java Non-blocking I/O (일반적으로 NIO라고 불리우고 때때로 New I/O라고도 함)은 강력한 I/O 오퍼레이션 기능을 제공하는 자바 프로그래밍 API이다. NIO는 J2S..

Back-End/Java 2018.10.02