본문 바로가기

전체 글84

Java User Defined Package Naming Convention (Spring, Android, ...) Overview We usually make package name for Java program. But, when we try to name package, we don't know how to name the package. In this post, We look what package name is and how to make package name by examples. let's look at some principles for package naming convention. Index What is package name? How to make package name Examples for package name 1. What is user-defined package name? - Pack.. 2021. 10. 30.
쿠키와 세션 개념 개요 쿠키와 세션은 개발자 말고도 인터넷 사용자라면 누구나 많이 들어본 단어입니다. 하지만 개념에 대해서는 많은 사람들이 헷갈려 하기에 쉽고 간단하게 정리해보려고 합니다. 일단 쿠키를 발급받고 사용하는 과정에 대해서 그림으로 보여드리고, 쿠키와 세션에 대한 설명을 하도록 하겠습니다. 목차 1. HTTP의 특징과 쿠키와 세션을 사용하는 이유 2. 쿠키 ( Cookie ) 3. 세션 ( Session ) 4. 쿠키와 세션의 차이 5. 세션을 사용하면 좋은데 왜 쿠키를 사용할까? 6. 쿠키/세션은 캐시와 엄연히 다르다! 1. HTTP의 특징과 쿠키와 세션을 사용하는 이유 HTTP 프로토콜의 특성이자 약점을 보완하기 위해서 쿠키 또는 세션을 사용합니다. 기본적으로 HTTP 프로토콜 환경은 "connectionl.. 2021. 10. 11.
Blocking or Non-Blocking, Synchronous and Asynchronous Overview When we develop application, we always think concepts called "Blocking, Non-blocking, Synchronous, Asynchronous". We usually think that "Blocking, non-blocking, Synchronous, Asynchronous" are the same. But, This perspective is wrong. It is unrelated concepts each other. It is difficult and confusing concepts. It is confused between "Blocking" and "Synchronous". Likewise, It is confused .. 2021. 10. 10.
What is Java GC(Garbage Collection)? Java uses memory without explicitly releasing it. Instead, JVM manages memory. JVM deletes unused objects in the Heap area by GC. Heap area is dynamically allocated memory area. Heap manages object-type data objects, typically classes such as String and Collection. The important part of this is to determine which object to keep and which object to GC in Heap. GC is designed with the following co.. 2021. 10. 5.
What is Java OOP(Object Oriented Programming)? We have a lot of thoughts about OOP(Object Oriented Programming). But many people can't answer easily. Some people answer SOLID principle. From the beginning class, we are going to learn about the basics of OOPs in JAVA. In order to implement OOP in JAVA, We have to satisfy a few things. The concepts for OOP is as follows. Class Object Abstraction Inheritance Encapsulation Polymorphism Attribute.. 2021. 10. 2.
Jackson ObjectMapper 정리 개요 Java 개발자라면 Jackson에서 제공하는 ObjectMapper와 자주 마주치게 됩니다. Java 클래스 내용을 확인하거나 내용물의 Parsing 과정에 필요한 커스터마이징이 존재하기 때문입니다. 물론 중요한 기능은 (1) "Java Object" =Serialize=> "JSON", (2) "JSON" =Deserialize=> "Java Object" 입니다. 개발 중에 매 번 찾아보기 지쳐서 이제는 한 곳에 정리가 필요하지 않을까 생각되어서 이 글을 쓰게 되었습니다. 목차 Add Dependency for "Jackson ObjectMapper" Basic Features Convert "Java Object" to "JSON" Convert "JSON" to "Java Object" C.. 2021. 6. 14.
자바 인터페이스(Java Interface)는 무엇인가? 개요 "자바 인터페이스(Java Interface)는 무엇인가?" 이런 궁금점을 가지고 있는 Java Programmer가 많습니다. 저는 "객체 지향 개발 5대 원칙 - SOLID"을 만족시켜줄 수 있어서라고 생각합니다. 그러면 "왜 SOLID를 만족시켜야 하는가?"라는 질문을 가지게 됩니다. 서비스 애플리케이션의 라이프사이클을 "설계 / 개발 / 유지보수" 세 단계로 나누면, 유지보수가 소프트웨어 라이프사이클에서 가장 큰 부분을 차지합니다. 유지보수에서 인터페이스(interface)는 SOLID를 구현하고, 객체 지향 개발을 하는데 큰 도움을 줍니다. "설계 / 개발 / 유지보수" 관점에서 객체 지향을 설명하면, 다음과 같은 장점이 있습니다. 객체 지향 사용하여, 대상을 추상화를 하고, 추상화된 대상.. 2020. 6. 25.
AWS RDS Proxy를 활용한 Aurora Failover 구현하기 개요AWS RDS Proxy은 "DB Connection Pool Management" 또는 "Automatic Failover를 위한 Proxy" 기능을 제공합니다. 결국, AWS RDS Proxy를 사용하는 이유는 HA(High Availability)를 구현하기 위함입니다. Solution을 사용하기 앞서서, HA(High Availability)를 위한 Multi-AZ(Multi Availability Zone) 개념을 시작으로 이야기를 풀어가보겠습니다. RDS는 HA(High Availability)를 위해서 Multi-AZ(Multi Availability Zone)를 권장합니다. Downtime 없는 DB Instance를 사용하기 위함입니다. Multi-AZ를 통한 DB 구성과 Applic.. 2020. 6. 18.
Spring "Field Injection"? or "Constructor Injection"? 이야기에 앞서서... Spring Framework에서 제공하는 @Autowired나 @Qualifier를 이용해서 객체를 찾아서 DI(Dependency Injection)해왔습니다. 물론 Java에서도 @Inject, @Resource를 제공해주어서 DI(Dependency Injection)를 할 수 있었습니다. 우선, DI는 IoC(Inversion of Control)의 핵심 원리를 구현하는 개념이라고 할 수 있습니다. 간단하게 IoC(Inversion of Control)란? : IoC의 핵심은 기존의 Programing code 안에 들어가 있던 객체의 생성/관리를 Spring Container에게 위임하여 객체의 생명주기를 관리하게 하는 것입니다. 관리하는 객체의 단위를 Bean이라고 명명.. 2020. 6. 16.
어떤 @Transactional을 사용해야 할까? 애플리케이션을 개발하다 보면, 보통 @Transactional을 사용해서 Transaction을 사용합니다. 관습적으로 사용하다 보니, 내부적으로 어떻게 돌아가는지 원리에 대해서만 관심을 가졌습니다. 하지만 여기에서는 조금 더 들어가서 살펴보려고 합니다. Transaction은 두 가지 형태로 구현할 수 있습니다. Programmatic Transaction 방식 : 직접 코드에서 Transaction을 구현하는 방식 Declarative Transaction 방식 : 원하는 Scope에서 Annotation을 선언하는 방식 여기서 이야기하려고 하는 주제는 2.Declarative Transaction방식입니다. 여기서 다시 "2.Declarative Transaction"의 종류는 다음 두 가지로 나뉩.. 2020. 6. 14.
Spring Transaction Exception 상황에서 Rollback 처리하기 스프링을 사용하면서 많은 서비스들이 트랜잭션을 단위로 하는 비즈니스 로직을 구현합니다. 저는 비즈니스 로직을 구현하는 과정에서 많이들 놓치는 Exception이 발생 상황에 대해서 살펴보려고 합니다. 가장 중요한 것은 Exception 타입에 따라서 어떻게 비즈니스 로직이 진행될지 판단하고, 처리하는 것입니다. 쿠팡 사용자 회원가입 기능을 예로 들겠습니다. 가입 시에 사용자에게 쿠폰을 발급하는 경우가 존재할 수 있습니다. 사용자가 가입하는 도중에 원인 모를 상황이 발생할 수 있습니다. 시스템이 셧다운 되거나, 메모리를 초과할 수도 있고, 또는 개발 단계에서 잘못된 구현으로 트랜잭션이 완료되지 못할 수 있습니다. 여기서 우리가 구분해야 하는 부분이 있습니다. Error와 Exception의 구분입니다. -.. 2019. 12. 31.
JPA 더티 체킹(Dirty Checking)이란? JPA(Java Persistence API)를 사용하면서 더티 체킹과 트랜잭션의 관계에 대해서 알고 있지 않으면, 비즈니스 로직에서 다루는 엔티티 데이터가 꼬이는 경우가 발생합니다. 데이터가 꼬이는 경우를 방지하려면, 더티 체킹(Dirty Checking)이 어떤 상황에 사용이 되는지 알고 있어야 합니다. 여기서는 더티 체킹이 어떤 상황에서 발생하는지 확인해보려고 합니다. 더티 체킹(Dirty Checking)이란? JPA는 엔티티 매니저가 엔티티를 저장/조회/수정/삭제를 합니다. 그런데 엔티티 매니저의 메서드를 찾아보면, 저장(persist)/조회(find)/수정(?)/삭제(delete)로 수정에 해당하는 메서드가 없습니다. 대신에 수정(?)에 해당하는 더티 체킹(Dirty Checking)을 지원합.. 2019. 9. 14.