JPA(Java Persistent API)란 ? ORM (Object Relational Mapping) 객체 관계 매핑 기술의 표준으로 인터페이스의 모음입니다. 따라서 실제로 동작하는 것이 아니기 때문에 구현체가 필요한데, JPA 표준을 구현한 구현체는 아래와 같이 Hibernate, EclipseLink, DataNucleus가 있으며 대표적으로 Hibernate를 사용합니다. ORM 이란 ? ORM 기술은 말 그대로 객체와 관계형 데이터 베이스를 매핑해 주는 기술으로 객체는 객체대로 설계할 수 있고 관계형 데이터베이스는 관계형 데이터베이스대로 설계가 가능하도록 ORM 프레임워크가 중간에서 매핑을 해줍니다. JPA의 동작 과정 JPA는 JAVA 애플리케이션과 JDBC 사이에서 동작하는데 JAVA 애..
비트마스크(BitMask)란? 비트마스크는 이진수를 사용하는 컴퓨터의 연산 방식을 이용해, 정수의 이진수 표현을 자료 구조로 쓰는 기법을 말합니다. 이진수는 0 또는 1을 이용하므로 하나의 비트(bit)가 표현할 수 있는 2가지 경우가 있는데, 비트가 1이면 "켜져 있다"라고 말하며, 0이면 "꺼져 있다"라고 말합니다. 비트마스크를 사용하는 이유 🟢 빠른 수행시간 원소의 수가 많지 않을 때 사용되며, bit연산이기 때문에 시간복잡도 O(1)에 구현되는 것이 많습니다. 🟢 작은 메모리 사용량 만약 bit가 10개인 경우, 각 bit당 두 가지의 경우를 가지기 때문에 2^10가지의 경우를 10bit 이진수 하나로 표현 가능합니다. 그렇기 때문에 하나의 정수로 매우 많은 경우의 수를 표현할 수 있기 때문에 메..
컬렉션 프레임워크란 "다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미" 합니다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것입니다. 또한, 인터페이스와 다형성을 이용한 객체지향적 설계를 통해 표준화되어 있어 재사용성이 높은 코드를 작성할 수 있고, 다수의 데이터를 다루는데 필요하고 다양하고 풍부한 클래스들을 제공하여 프로그래머들에게 편리함을 제공해줍니다. 컬렉션 프레임워크 핵심 인터페이스 컬렉션 프레임워크에서는 데이터를 저장하는 자료 구조에 따라 다음과 같은 3가지 타입이 존재 합니다. 그리고 인터페이스 List와 Set의 공통된 부분을 뽑아서 새로운 인터페이스인 Collection을 추가로 정의하였습니..
Math클래스는 기본적인 수학계산에 유용한 메서드로 구성되어 있습니다. 이번 포스팅을 통해 Math클래스의 자주 사용되는 메서드에 대해 다뤄볼 것이며 삼각함수 구하는 법도 다뤄보려 합니다. Math 클래스 Math.abs() 주어진 값의 절대값을 반환합니다. public class MathTest { public static void main(String[] args) { int i = Math.abs(-2); double d = Math.abs(-4); System.out.println(i); System.out.println(d); } } Math.sqrt() - ( double형으로 반환 ) 주어진 값의 제곱근 값을 반환합니다. public class MathTest { public static v..
인터페이스란 ? 인터페이스는 일종의 추상클래스로, 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없습니다. 오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용되지 않습니다. 추상 클래스를 부분적으로만 완성된 "미완성 설계도"라고 한다면, 인터페이스는 구현된 것은 아무것도 없는 그냥 스케치만 되어 있는 "기본 설계도"라 할 수 있습니다. 인터페이스의 특징 다중 상속이 가능하다. 추상 메서드와 상수만을 가진다. 생성자 생성이 불가능하다. 메서드 오버라이딩이 필수적이다. 인터페이스의 장점 1. 개발시간을 단축시킬 수 있다. 인터페이스를 통해 메서드를 호출하는 쪽에서는 메서드의 내용과 관계없이..
String 클래스는 immutable(불변) 불변성을 가졌기 때문에 String 객체를 변경시 실제로 변경되는 것이 아닌 새로운 String 객체를 생성합니다. 즉, 지정된 문자열을 변경할 수 없습니다. 반면 StringBuffer/StringBuilder 클래스는 mutable(가변) 가변성을 가져, 동일한 객체내에서 문자열 변경이 가능합니다. StringBuffer/StringBuilder 클래스의 차이점 StringBuffer는 멀티쓰레드에 안전하도록 동기화되어 있습니다. 그래서 멀티쓰레드로 작성된 프로그램이 아닌 경우, StringBuffer의 동기화는 불필요하게 성능만 떨어트리게 됩니다. 그래서 StringBuffer에서 쓰레드의 동기화만 뺀 StringBuilder 가 추가되었습니다. Str..