본문 바로가기

기초 지식

(27)
Java 1.8 Default Method Default Method - 자바 1.8부터 도입된 문법으로 인터페이스 내부에 로직을 포함 시킬 수 있는 것이 특징 - 하위호환성을 위해 도입 Interface 라는 기능에 어울리지 않는 Default Method가 Java 1.8에서 추가 되었습니다. 하위호환성을 위한다는 것은 기존의 레거시 코드에 interface 메소드를 추가해야한다면 해당 interface를 상속받는 모든 클래스에서 추가된 메소드의 구현을 해줘야합니다. 하지만 Default Method를 사용하고 수정이 필요한 클래스에서만 메소드 오버라이딩을 해준다면 간편하게 수정할 수 있습니다. interface TestInterface { //기존 메서드들 public void go(); public void get(); default vo..
[MySQL] Insert 후 PK값 얻어오기 (MyBatis 사용) 임시로 만든 City라는 테이블을 살펴보겠습니다. CITY_ID 가 PK 이면서 AI(auto increment)로 사용하는 입장에서는 다음 id를 쉽게 유추할 수 없습니다. 이 PK 값을 바로 가져와서 insert에 활용하는 등 여러가지 상황이 있을 수 있으니 얻어와보도록 하겠습니다. 이번 예제에서는 MyBatis의 SelectKey를 사용해서 쿼리를 작성합니다. 쿼리 /*keyProperty는 결과값을 넣을 model의 변수명*/ /*order(BEFORE, AFTER)를 통해 Insert 쿼리를 실행 후 가져올지 그 전에 가져올지 정할 수 있다*/ SELECT LAST_INSERT_ID() INSERT INTO USER_INFO ( CITY , COUNTRY_ID , LAST_UPDATE ) VAL..
Java 1.8 Stream 정리 Java Stream 자바 1.8 버전에서는 Stream 기능이 추가 되었습니다. 기존에는 for, foreach를 사용하여 컬렉션과 배열을 반복하며 인자들을 가공해왔을텐데 이 부분을 Stream으로 대체할 수 있게 되었습니다. 이로 인해 코드의 양은 줄어들고 가독성은 좋아지게 되었습니다. 장점으로는 코드량이 줄어든다는 점과 가독성 외에도 멀티 쓰레딩(multi threading)이 가능하다는 것입니다. 하지만 단점도 있겠죠 많은 양의 데이터를 처리하는데 foreach를 대체하려고 Stream을 사용하면 속도면에서 조금 느리게 됩니다. 따라서 많은 양을 처리하고 효율성이 중요한 부분이라면 foreach를 사용하는 편이 낫습니다. (참고. madplay.github.io/post/mistakes-when-..
Java 1.8 method reference (메소드 레퍼런스) Method Referece - 자바 1.8부터 도입된 문법으로 특정 람다 표현식을 축약한 것 - 가독성을 높일 수 있다 간단하게는 람다 표현식을 특수한 상황에서 좀 더 보기 편하게 작성하는 방식이라고 이해할 수 있습니다. //람다식 (args) -> ClassName.staticMethod(args) //메소드 참조 ClassName::staticMethod //람다식 (arg0, rest) -> arg0.instanceMethod(rest) //메소드 참조 ClassName::instanceMethod //람다식 (args) -> expr.instanceMethod(args) //메소드 참조 expr::instanceMethod //모던자바인액션 참조 예시를 들어보자면 저는 주로 stream과 함께 ..
Java 1.8 Lambda Expression (람다 표현식) Lambda Expression (람다 표현식) - 자바 1.8 부터 도입된 함수 지향적 표현 방식이다. - 간단하게 식별자없이 실행 가능한 함수표현이다. - 병렬처리, 이벤트 지향적 프로그래밍에 적합하다. 사용방법 (매개변수, ...) -> { 실행문 ... } //람다식 x interface Phone{ String getName(String series, String version); } class Main { public void mainExample() { Person person = new Person(); person.buyPhone(new Phone() { public String getName(String series, String version) { return series + vers..
Java 각 버전의 특징들 (~JAVA21) Java 1.8이 나온지는 벌써 6년정도 되었습니다. 그동안 java 1.8을 꾸준히 사용해오고 jdk 11뿐만 아니라 최근에는 jdk 17까지 나온 상황입니다. 이 시점에서 다시 한번 정리하면 좋을 것 같아서 Java 1.8 부터 정리해보려고 합니다. 물론 다양한 특징들이 있겠지만 특징적인 일부만 나열하도록 하겠습니다 Java 1.8 특징 (2014.03 release) Lambda Expression (람다표현식) Method Reference (메소드 참조) Stream (스트림) Default Method Optional Joda Time Java 9 특징 (2017.09 release) Jingsaw 기반 런타임 모듈화 Jshell Private Interface Method Immutable ..
[Oracle] Partitioned index 오라클 partitioned index에 대해 정리한 글입니다. 1. 파티션 인덱스 인덱스는 데이터베이스 테이블에 있는 데이터를 빨리 찾기 위한 용도의 데이터베이스 객체이며 일종의 색인기술입니다. 테이블에 있는 하나 이상의 컬럼으로 만들어지며 생성되면 인덱스 테이블(index table)을 생성해 관리되게 됩니다. 인덱스도 파티션 테이블과 같이 파티션 인덱스가 존재합니다. 파티션 인덱스는 파티션 유무에 따라 파티션과 비파티션으로 나뉘고 또 Global과 Local로 구분되게 됩니다. 2. 파티션 인덱스 유형 1) Local Partitioned Index / Global Partitioned Index 파티션 테이블에는 파티션키(Partition Key)가 있고 이 키로 테이블이 분할되어 있습니다. 이 ..