study
-
[JAVA] hashCode & equalsstudy/java 2020. 9. 2. 00:12
Object 클래스에는 hashCode() 메서드와 equals() 메서드가 정의되어 있다. Object 클래스에 있는 hashCode() 메서드는 자바 홈페이지에 이렇게 정의되어 있다. Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by HashMap 객체의 해시 코드값을 반환합니다. 이 메서드는 HashMap에서 제공하는 것과 같은 해시 테이블의 이점을 위해 지원됩니다. 즉, HashTable이나 HashMap은 hashcode를 이용함으로써 객체를 저장하는 다른 컬렉션들에 비해 장점을 갖게된다는 것이다. 장점은 어떤 장점일까? Ke..
-
[DESIGN PATTERN] 템플릿 메서드 패턴study/design pattern 2020. 8. 30. 18:13
템플릿 메서드 패턴 ( Template Method Pattern ) 알고리즘의 일부 또는 전부를 하위 클래스에서 구현하거나 위임하는데 사용한다. 즉, 공통으로 사용하는 알고리즘은 부모 클래스에 정의하고 특정 부분에서 사용하는 알고리즘은 하위 클래스에서 수행하도록 설계하는 것이다. public abstract class HouseTemplate { public final void buildHouse(){ buildFoundation(); buildPillars(); buildWalls(); buildWindows(); System.out.println("House is built"); } private void buildWindows(){ System.out.println("Building Glass W..
-
[DESIGN PATTERN] Strategy 패턴study/design pattern 2020. 8. 30. 18:01
스트레티지 패턴 ( Strategy pattern ) 지정된 알고리즘의 세부 구현을 변경할 필요없이 쉽게 교환할 수 있는 디자인 패턴이다. 실행 중이라도 구현된 알고리즘을 교환할 수 있으므로 의존성 주입에 자주 사용된다. 아래는 Strategy 패턴을 통해 간단한 로거를 만드는 예제이다. public interface Logging { void write(String message); } public class ConsoleLogging implements Logging { @Override public void write(String message) { System.out.println(message); } } public class FileLogging implements Logging { priva..
-
[DESIGN PATTERN] 빌더 패턴study/design pattern 2020. 8. 30. 17:42
빌더 패턴 필드가 많은 객체를 생성할 경우 생성자를 이용하면 다루기도 어렵고 헷갈릴 수도 있다. @Getter @Setter public class Computer { private String HDD; private String RAM; private String graphicCard; private String CPU; private boolean isGraphicCardEnable; private boolean isBluetoothEnable; } 이 필드 중에는 객체로 생성할 때 꼭 포함되어야 하는 필드도 있고 그렇지 않은 필드도 있다. 꼭 포함되어야 하는 필드들은 생성자의 매개변수로 꼭 포함이 되어있어야 한다. 꼭 포함되어야 하는 필드들이 많아질수록 생성자는 그만큼 복잡해진다. 또 각 필드마다 ..
-
[SPRING] JPA의 영속성 컨텍스트study/spring 2020. 8. 30. 15:27
영속성 관리에서 가장 중요한 것은 2가지이다. 객체와 관계형 데이터베이스간의 매핑 영속성 컨텍스트 ( JPA 내부 동작 ) EntityManagerFactory와 EntityManager 클라이언트의 요청이 올때 마다 ( 즉, thread가 하나씩 생성될 때마다 ) EntityManager를 생성한다. EntityManager는 내부적으로 DB 커넥션 풀을 사용해서 DB에 접근한다. EntityManagerFactory JPA는 EntityManagerFactory를 만들어야 한다. 애플리케이션이 로딩되는 시점에 DB당 딱 하나만 생성해야 한다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("emf"); 그리고 WAS가 종료되는 시..
-
[SPRING] @SpringBootApplicationstudy/spring 2020. 8. 29. 23:04
스프링부트를 사용해서 백엔드 개발을 공부하고 있었지만 정작 내가 직접 구현하지 않는 부분에 대해서는 파악하지 못하고 있다는 것을 느꼈다. 그 부분들을 찾아서 정리해나가려고 한다. 그 첫 번째는 @SpringBootApplication 이다. @SpringBootApplication 스프링 부트 프로젝트를 만들면 자동으로 생성되는 애플리케이션 클래스에 선언되어 있는 어노테이션이다. @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } @SpringBootApplication을 찾아들어가보면 @Target(E..
-
[SPRING] Spring Batch Chunk 지향처리study/spring 2020. 8. 21. 22:03
Chunk Spring Batch에서의 Chunk란 데이터 덩어리로 작업을 할 때 각 커밋 사이에서 처리되는 row의 수를 말한다. 즉, Chunk 지향 처리란 한 번에 하나씩 데이터를 읽어 Chunk라는 덩어리를 만든 후 Chunk 단위로 트랜잭션을 다루는 것을 의미한다. 여기서 트랜잭션이라는 것은 Chunk 단위로 트랜잭션을 수행하기 때문에 실패할 경우 해당 Chunk 만큼만 롤백이 되고 이전에 커밋된 트랜잭션 범위까지는 반영이 된다는 것이다. 위의 이미지로 확인할 수 있는 순서는 아래와 같다 1. Reader를 통해 데이터를 하나 읽어온다. 2. 읽어온 데이터를 Processor에서 가공한다. 3. 가공된 데이터들을 별도의 공간에 모은 후 Chunk 단위만큼 쌓이게 되면 Writer에 전달하고 Wr..
-
[JAVA] Exceptionstudy/java 2020. 8. 21. 19:15
Throwable 클래스 예외 처리를 할 수 있는 최상위 클래스이다. Exception과 Error는 Throwable의 상속을 받는다. Error : 오류 Error는 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용 프로그램에 문제가 생겼거나 JVM 실행에 문제가 생겼을 경우에 발생하는 것을 말한다. 따라서 개발자가 미리 예측해서 처리할 수 없다. Exception : 예외 Exception은 사용자의 잘못된 조작 혹은 개발자의 잘못된 코딩으로 인해 발생하는 프로그램의 오류를 말한다. Exception이 발생하면 Error와 마찬가지로 프로그램이 종료가 된다. 하지만 Exception은 Exception Handling(예외 처리)를 통해 프로그램이 종료되지 않고 정상적으로 동작할 수 있게 한다. C..