Reflection 이란? Reflection은 Class라는 API를 사용해 클래스, 메소드, 필드등에 대해 구체적으로 알지 못하더라도 런타임에 접근하게 해주는 기능입니다. Reflection allows programmatic access to information about the fields, methods and constructors of loaded classes, and the use of reflected fields, methods, and constructors to operate on their underlying counterparts, within encapsulation and security restrictions. 리플렉션을 사용하면 로드된 클래스의 필드, 메서드 및 생성자..
RDB는 외래키를 사용해 테이블 사이의 연관관계를 나타냅니다. 이 외래키는 RDB를 RDB('관계형' 데이터베이스)로 만들어 주는 아주 중요한 속성이죠. 따라서 JPA는 엔티티 사이에 연관관계를 매핑하는 방법을 제공합니다. 하지만 객체와 테이블의 차이로 인해 연관관계를 표현하는 방식 또한 차이가 있고 조금 복잡해지는 부분이 있는 것 같습니다. 테이블은 외래키로 연관관계를 맺습니다. 외래키 하나만으로 두 테이블 사이의 관계가 표현됩니다. 하지만 객체 사이의 관계는 테이블처럼 값으로 표현되지 않습니다. (물론 할 수는 있지만 oop스럽지 않죠) 객체 사이의 관계는 참조로 표현되죠. 따라서 JPA는 적절한 어노테이션만 달아준다면 참조로 표현된 객체 사이의 관계를 테이블 사이의 관계로 매핑해 줍니다. 관계 설정..
JPA는 자바 ORM기술의 표준이고 ORM(Object Relational Mapping)은 이름 그대로 객체과 관계형 데이터 베이스를 연결해 주는 기술입니다. 따라서 JPA는 class와 table을 연결해주는 기능을 제공하고 있는데 이는 여러가지 어노테이션으로 어렵지 않게 이용할 수 있습니다. @Entity class에 @Entity을 붙임으로서 JPA가 관리하는 엔티티 클래스라는 것을 명시해줄 수 있습니다. 테이블과 매핑될 클래스에는 필수로 붙여줘야 합니다. 주의 할 점은 다음과 같습니다. public 혹은 protected의 접근 제한자를 가진 기본생성자가 필하다는 것 final 클래스, enum, inner, interface 클래스에는 상용할 수 없다는 것 final이 붙은 필드는 테이블에 저..
JPA(Java Persistence API)란 The Java Persistence API (JPA) is a Java specification for accessing, persisting, and managing data between Java objects / classes and a relational database. JPA is now considered the standard industry approach for Object to Relational Mapping (ORM) in the Java Industry. JPA(Java Persistence API)는 Java 객체/클래스와 관계형 데이터베이스 간의 데이터 액세스, 유지 및 관리를 위한 Java 스펙이다. JPA는 이제 Java ..
람다식(Lambda Expression)에 대해 알아보겠습니다. 하지만 람다식에 대해 알아보기 전에 먼저 알고 넘아가면 도움이 될만한 선행지식들을 짚고 넘어가겠습니다. 익명 클래스(Anonymous Classes) It is an inner class without a name and for which only a single object is created. An anonymous inner class can be useful when making an instance of an object with certain “extras” such as overriding methods of a class or interface, without having to actually subclass a class. ..
* Java8 버전의 문법을 기준으로 작성되었습니다. 제네릭이란? 무언가에 대해 이해하기 위해선 명확한 정의가 필요하다고 생각합니다. 따라서 몇 가지 레퍼런스들을 찾아보았습니다. They(Generics) were designed to extend Java's type system to allow "a type or method to operate on objects of various types while providing compile-time type safety". 제네릭은 컴파일 타임 타입 안정성을 제공하면서, 다양한 타입의 객체에서 작동하는 타입 또는 메소드를 허용하도록 Java의 타입 시스템을 확장하도록 설계된 기능이다. - Wikipedia / Generics in Java 제네릭의 기능을..
자바의 예외처리에 대해 알아보겠습니다. 오류의 종류 프로그램은 오작동을 일으킬 때 오류를 발생시킵니다. 여러 가지의 오류들이 있지만 크게 두 가지 타입으로 나눠볼 수 있습니다. CompileTime Exception RunTime Exception CompileTime에 발생하는 오류나 예외는 말 그대로 컴파일 시 발생되며 이 때문에 컴파일 에러 발생할 시 프로그램 빌드가 불가해 집니다. RunTime에 발생하는 오류는 프로그램 실행 중 발생하는 오류들을 이야기하며, 컴파일러가 알려주지 않기 때문에 개발자는 발생 가능한 RunTime 오류들을 미리 처리해 두어야만 합니다. 자바의 Exception 자바는 발생 가능한 다양한 오류들을 정의해서 제공하고 있습니다. 모든 오류들은 Throwable class를..
Priority Queue란? In computer science, a priority queue is an abstract data type similar to a regular queue or stack data structure in which each element additionally has a "priority" associated with it. In a priority queue, an element with high priority is served before an element with low priority. Priority Queue는 Queue나 Stack 같은 일반적인 자료구조에 우선순위(priority)라는 요소가 추가된 데이터 타입이다. Priority Queue 에선 우..