분류 전체보기
-
03. 영속성 관리JPA 2021. 1. 31. 19:52
JPA가 제공하는 기능은 크게 엔티티와 테이블을 매핑하는 설계 부분과 매핑한 엔티티를 실제 사용하는 부분으로 나눌 수 있다. 이 장에서는 매핑한 엔티티를 엔티티 매니저를 통해 어떻게 사용하는지 알아보자. 엔티티 매니저는 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일을 처리한다. 이름 그대로 엔티티를 관리하는 관리자다. 개발자 입장에서 엔티티 매니저는 엔티티를 저장하는 가상의 데이터베이스로 생각하면 된다. 1. 엔티티 매니저 팩토리와 엔티티 매니저 데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory를 하나만 생성한다. 다음은 엔티티 매니저 펙토리를 생성하는 코드다. EntityManagerFactory emf = Persistence..
-
2주차 과제: 자바 데이터 타입, 변수 그리고 배열객체지향 2021. 1. 19. 23:57
목표 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다. 학습할 것 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var 1. 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입, 영어로 primitive 또는 원시 타입 또는 기본형 타입 이라고 한다. 우선 타입이란 데이터 타입을 줄인 말로 자료형 이라고 한다. 그럼 데이터 타입이란 무엇일까? 컴퓨터 관점에서 타입은 데이터가 메모리에 어떻게 저장될 것이고 또 어떻게 다뤄져야 하는지에 대해 알려주는 것이다. 즉, 데이터 타입을 보면 컴퓨터에서..
-
02. JPA 시작JPA 2021. 1. 17. 21:22
1. 객체 매핑 시작 먼저 SQL을 실행해서 예제에서 사용할 회원 테이블을 만들자. 다음으로 애프리케이션에서 사용할 회원 클래스를 만들자. package com.toy.movie.domain.database.member; import javax.persistence.*; @Entity @Table(name="MEMBER") public class Member { @Id @Column(name = "ID") private String id; @Column(name = "NAME") private String username; private Integer age; //매핑 정보가 없는 필드 public String getId() { return id; } public void setId(String id) ..
-
1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가.객체지향 2021. 1. 17. 20:09
목표 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. 학습할 것 JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성 요소 JDK와 JRE의 차이 1. JVM이란 무엇인가 - Java Virtual Machine '자바 가상 머신'을 뜻하는 말로 바이트코드를 실행하는 주체 - 한번 작성해서 어디서든 실행할 수 있다는 말로, 자바 코드로 작성한 프로그램은 실행할 환경에 독립적으로 실행 - 정해진 약속(Java byte code)만 지켜지면 JVM은 자신의 환경(OS)에 맞게 Java byte code를 실행 JVM과 같은 중간언어를 해석해주는 추상화(여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출..
-
01-3. JPA란 무엇인가?JPA 2021. 1. 14. 23:56
JPA는 자바 진영의 ORM 기술 표준이다. 애플리케이션과 JDBC 사이에서 동작한다. 그렇다면 ORM이란 무엇인가? 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. 예를 들어 ORM 프레임워크를 사용하면 객체를 데이터베이스에 저장할 때 INSERT SQL을 직접 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 된다. 그러면 ORM 프레임워크가 적절한 INSERT SQL을 생성해서 데이터베이스에 객체를 저장해준다. jpa.persist(member); //member 객체를 DB에 저장 한다. Member member = jpa.find(memberId); /..
-
01-2. JPA 소개JPA 2020. 12. 29. 23:15
1. 지연 로딩 Member와 Order가 서로 연관 되어있다고 했을 때 Member member = jpa.find(Member.class, memberId); //처음 조회 시점에서 SELECT MEMBER SQL 수행 Order order = member.getOrder(); order.getOrderDate(); //Order를 사용하는 시점에서 SELECT ORDER SQL 수행 위의 코드는 지연 로딩을 사용하는 코드이다. 여기서 마지막 줄의 order.getOrderDate() 같이 실제 Order 객체를 사용하는 시점에 JPA는 데이터베이스에 ORDER 테이블을 조회한다. Member를 사용할 때마다 Order를 함께 사용하면, 이렇게 한 테이블씩 조회하는 것보다는 Member를 조회하는 시..
-
01-1. JPA 소개JPA 2020. 12. 1. 21:52
1.1 SQL을 직접 다룰 때 발생하는 문제점 관계형 데이터베이스는 가장 대중적이고 신뢰할 만한 안전한 데이터 저장소다. 그래서 자바로 개발하는 애플리케이션은 대부분 관계형 데이터베이스를 데이터 저장소로 사용한다. 데이터베이스에 데이터를 관리하려면 SQL을 사용해야 한다. 자바로 작성한 애플리케이션은 JDBC API를 사용해서 SQL을 데이터베이스에 전달한다. 1.1.1 반복, 반복 그리고 반복 SQL을 직접 다룰 때의 문제점을 알아보기 위해 자바와 관계형 데이터베이스를 사용해서 회원 관리 기능을 개발해보자. 회원 테이블은 이미 만들어져 있다고 가정하고 회원을 CRUD하는 기능을 개발해보자. 1. 회원 객체 만든다, 2. 회원 객체를 데이터베이스에 관리할 목적으로 회원용 DAO를 만든다. 3. 2번에서 ..