본문 바로가기
  • Where there is a will there is a way.

개발85

자바 직렬화에 대한 생각정리 언젠가 내가 개발하고 있는 클래스에 implements Serializable 이 되어있는 걸 확인했다. 해당 클래스는 jpa entity 였고 문서를 찾아본 결과 entity 에 붙어있었고 왜 붙였을까에 대한 인터넷 서칭을 해보았다. “If an entity instance is to be passed by value as a detached object (e.g., through a remote interface), the entity class must implement the Serializable interface.” 따라서, 이 객체를 어딘가로 전송하거나 세션에 기록하거나 등등 정말 serialization을 위한 용도가 아니라면, Hibernate상에서는 굳이 Serailizable을 구현하.. 2020. 7. 26.
애플리케이션 아키텍처 아키텍처는 어떤 경계 안에 있는 내부 구성요소들이 어떤 책임을 갖고 있고, 어떤 방식으로 서로 관계를 맺고 동작하는지를 규정하는 것이라고 할 수 있다. 아키텍처는 단순히 정적인 구조를 나타내는 것으로만 생각하기 쉽지만 실제로는 그 구조에서 일어나는 동적인 행위와 깊은 관계가 있다. 아키텍처 설계는 여러가지가 있다. 시스템 레벨의 아키텍처 , 애플리케이션 레벨의 아키텍처 , 데이터 아키텍처등 이 글에서는 스프링 웹 애플리케이션 아키텍처에 대해서 정리해보겠다. 1. 계층형 아키텍처 우리는 자바 애플리케이션을 설계할때 우선적으로 성격이 다른 코드가 얽혀 있는 것을 두 개의 오브젝트로 분리하고, 그 사이에 유연한 결합을 가질 수 있도록 인터페이스를 두고, 그 관계를 맺어주는 제 3의 존재인 DI 컨테이너를 둬서.. 2020. 7. 19.
스프링이란 무엇인가? 스프링에 대해 가장 잘 알려진 정의는 이렇다 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 우리가 자바 개발을 하면서 컬렉션 프레임워크라고 불리우는 프레임워크를 사용한 경험이 있다. ( 물론 스프링도 ) 그런데 왜 스프링은 애플리케이션 프레임워크라고 하는 것일까? 애플리케이션 프레임워크 스프링의 기원이 된 예제 애플리케이션의 프레임워크는 책에서 설명한 각종 자바 엔터프라이즈 개발 전략의 핵심을 담아서 개발됐다. 자바 엔터프라이즈 개발의 전 계층에 등장하는 기술과 애플리케이션의 전 영역에 대한 효과적인 설곋와 개발 기법을 다루고 있기 때문에 자연스럽게 애플리케이션의 전 영역을 지원하는 종합적인 애플리케이션 프레임워크라고 하는 것이다. 스프링의 일차적인 존재 목적은 핵심 기술.. 2020. 7. 12.
객체의 생성 지난번 빌더 패턴을 보면서 객체의 생성과 관리에 대해서 다시한번 생각해보는 계기가 되었다. 2020/07/06 - [개발/java] - 빌더로 생성자 대체하기 빌더로 생성자 대체하기 내가 자바로 웹 애플리케이션을 개발할때 인스턴스 생성에 대한 고민이 있었다. Goods goods = new Goods(); goods.setGoodsId(); goods.setGoodsTitle(); goods.setGoodsCategory(); goods.set... 이와 같이 상.. derekpark.tistory.com 그렇다면 어떨때 객체를 생성하고 어떨때 재사용하게끔 하는것이 좋을까 ? effective java 3 에는 이렇게 설명한다. 똑같은 기능의 객체를 매번 생성하기 보다는 객체 하나를 재사용하는 편이 나을.. 2020. 7. 9.
빌더로 생성자 대체하기 내가 자바로 웹 애플리케이션을 개발할때 인스턴스 생성에 대한 고민이 있었다. Goods goods = new Goods(); goods.setGoodsId(); goods.setGoodsTitle(); goods.setGoodsCategory(); goods.set... 이와 같이 상품의 데이터가 많을때 ( null 이 허용되는 선택적 매개변수가 많을 때 ) 어떻게 대응하여 인스턴스를 생성할 것인가? 식품 포장의 영양정보를 표현하는 클래스를 생각해보자. 영양정보의 항목은 20개가 넘어간다고 해보자 그런데 대부분 제품은 이 선택 항목중 대다수 값이 0으로 표현된다고 하자 ( 안쓰는 경우가 많다 라고 표현해보자 ) 이런 클래스용 생성자는 어떤 모습일까 ? 기존에 개발자들은 점층적 생성자 패턴을 즐겨 사용했다.. 2020. 7. 6.
트랜잭션에 대한 심화 이해 현대의 거의 모든 관계형 데이터베이스와 일부 비관계형 데이터베이스는 트랜잭션을 지원한다. 2000년대 후반에는 비관계형 데이터베이스가 인기를 얻기 시작하면서 새로운 데이터 모델을 선택할 수 있게 하고 기본적으로 복제와 파티셔닝을 제공함으로써 관계형 데이터베이스의 현 상황을 개선하는 것을 목표로 했다. 새로운 세대의 데이터베이스 중 다수는 트랜잭션을 완전히 포기하거나 과거에 인식되던 것보다 훨씬 약한 보장을 의미하는 단어로 트랜잭션의 의미를 재정의 했다. 다른 모든 기술적 설계 선택과 마찬가지로 트랜잭션은 이점과 한계가 있다. 트랜잭션은 기본적으로 ACID 의 특성을 지닌다. 이에 대해서도 설명이 되어있지만 기본적인 이야기는 본인 외에도 다른곳에도 정리가 잘 되어있기 때문에 생략한다. 단일 객체의 쓰기 원.. 2020. 6. 30.