Checked Exception : 컴파일 시점에 체크된 exception : runtime exception을 상속하지 않음, 명시적으로 꼭 처리해야 함 IOException SQLException DataAccessException ClassNotFoundException InvocationTargetException MalformedURLException UnCheckedException : 런타임 시점에 체크된 exception : runtime exception을 상속함 NullPointerException ArrayIndexOutOfBound IllegalArgumentException IllegalStateException 참고 : 자바 예외 구분: Checked Exception, Unch..
RESTful 하다란 무엇일까 : REST의 원리를 잘 지키는 시스템을 RESTful 하다라고 한다. RESTful한 API란? : ‘각 구성요소들의 역할이 완벽하게 분리되어 있는 것’ URI는 각 리소스를 명확하게 인식할 수 있도록 용이한 표현방식을 가져야 한다. 각 리소스에 대한 행위를 HTTP 메소드를 이용하여 Uniform(일관성)하게 정의할 수 있어야 한다. Uniform한 형식에 의해 제한 받는 세부 기능의 경우 JSON, XML 등을 이용하여 별도로 정의함으로써, 기능을 명확하게 분리할 수 있어야 한다. 그 중에서도 가장 중요한 부분은 ‘URI의 명확한 정의’ 이다. 어떻게 URI을 설계 해야 하는가 슬래시(/)를 이용해서 계층 관계를 표현한다. 여러 리소스들의 집합을 의미하는 컬렉션의 경우..
엔티티 타입(Entity Type)과 값 타입(Value Type)의 특징은 다음과 같다. 엔티티 타입의 특징 식별자(@Id)가 있다. 엔티티 타입은 식별자가 있고 식별자로 구분 할 수 있다. 생명 주기가 있다. 생성하고, 영속화 하고, 소멸하는 생명 주기가 있다. em.persist(entity)로 영속화 한다. em.remove(entity)로 제거한다. 공유할 수 있다. 참조 값을 공유할 수 있다. 이것을 공유 참조라 한다. 값 타입의 특징 식별자가 없다. 생명 주기를 엔티티에 의존한다. 스스로 생명 주기를 가지지 않고 엔티티에 의존한다. 의존하는 엔티티를 제거하면 같이 제거된다. 공유하지 않는 것이 안전하다. 엔티티 타입과는 다르게 공유하지 않는 것이 안전하다. 대신 값을 복사해서 사용해야 한다...
다룰 내용은 다음과 같다. 프록시워 즉시로딩, 지연로딩 : 객체는 객체 그래프로 연관된 객체를 탐색한다. 그런데 객체가 데이터베이스에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 실제 사용하는 시점에 데이터베이스에서 조회할 수 있다. 하지만 자주 함께 사용하는 객체들은 조인을 사용해서 함께 조회하는 것이 효과적이다. JPA는 즉시 로딩과 지연 로딩이라는 방법으로 둘을 모두 지원한다. 영속성 전이와 고아 객체 : JPA는 연관된 객체를 함께 저장하거나 함께 삭제할 수있게 영속성 전이와 고아 객체 제거라는 편리한 기능을 제공한다. 8.1 프록시 JPA는 엔티티가 실제 사용될 떄까지 데이터베이스 조회를 지연하는..
4.1 @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다. @Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라 부른다. (name 속성 정의하지 않을 시 클래스 이름 그대로 사용 됨) @Entity 적용 시 주의 사항은 다음과 같다. 기본 생성자는 필수 (파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스에는 사용할 수 없다. 저장할 필드에 final을 사용하면 안된다. JPA가 엔티티 객체를 생성할 때 기본 생성자를 사용하므로 이 생성자는 반드시 있어야 한다. 자바는 생성자가 하나도 없으면 다음과 같은 기본 생성자를 자동으로 만든다. public Member(..
3.1 엔티티 매니저 팩토리와 엔티티 메니저 엔티티 매니저 팩토리 : 엔티티 매니저를 만드는 공장. 공장을 만드는 비용이 상당히 크기에 한개만 만들어서 애플리 케이션 전체에 공유하도록 설계됨. 반면에 공장에서 앤티티 매니저를 생성하는 비용은 거의 들지 않음 엔티티 매니저 팩토리는 여러 스레드가 동시에 접근해도 안전하므로 서로 다른 스레드 간에 공유해도 되지만, 엔티티 매니저는 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 스레드 간에 절대 공유하면 안된다. EntityManagerFactory에서 다수의 엔티티 매니저를 생성 엔티티 매니저는 데이터 베이스 연결이 꼭 필요한 시점 까지 커넥션을 얻지 않는다. 예를 들어 트랜잭션을 시작할 때 커넥션을 획득한다. EntityManager2는 커넥션을 ..
1.1 SQL을 직접 다룰 때 발생하는 문제점 자바로 작성한 애플리케이션은 JDBC API를 이용해서 SQL을 데이터 베이스에 전달한다. 데이터 베이스는 객체구조와는 다른 데이터 중심의 구조를 가지므로 개발자가 객체 지향 애플리케이션과 데이터 베이스 중간에서 SQL과 JDBC API를 이용해서 변환 작업을 직접 해주어야 한다. 문제는 객체를 데이터베이스에 CRUD하려면 너무 많은 SQL과 JDBC API 코드로 작성해야 한다는 점이다. 그리고 테이블 마다 이런 비슷한 일을 반복해야 한다. 애플리케이션에서 SQL을 직접 다룰 때 발생하는 문제점을 요약하면 다음과 같다. 진정한 의미의 계층 분할이 어렵다. 엔티티를 신뢰할 수 없다. SQL에 의존적인 개발을 피하기 어렵다. JPA와 문제 해결 JPA를 이용하..
JVM이란? 자바 가상머신 가상머신이란 프로그램을 실행하기 위해 물리적으로 유사한 머신을 소프트웨어로 구현한 것 Java와 OS사이에서 중개자 역할을 하며 Java가 OS에 구해받지 않고 재사용 가능하도록 함 메모리 관리, Garbage Collection수행 스택기반의 가상머신 클래스로더를 통해 읽어 들여 자바API와 함께 실행 프로그램이 실행되면 JVM은 OS로 부터 이 프로그램이 필요로 하는 메모리를 할당 (JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리 함) 자바 컴파일러(javac)가 자바 소스코드(.java)를 읽어들여 자바 바이트코드(.class)로 변환 (.java -> .class) Class Loader를 통해 class파일을을 JVM으로 로딩 로딩된 class파일들은 Ex..
- Total
- Today
- Yesterday
- JPA 영속성관리
- springboot
- 플러그인
- JPA란
- 자바 가상머신
- entity type
- spring jpa
- spring boot 2.1
- plugin
- HTTPS
- entityfactory
- tomcat Ajp
- Spring
- jpa 값타입
- entitymanager
- 프록시 설정
- JPA 엔티티
- 의존성 사이클
- 엔진엑스
- https 동시사용
- angular2
- JPA
- nginx
- spring boot 포트
- spring boot http
- exception종류
- SSL
- HTTP
- AJP
- spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |