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

개발/java27

클래스와 멤버에 대해서 멤버에 대해서 정보 은닉, 혹은 캡슐화라고 하는 개념은 자바에서 중요하다. ( 물론 자바 뿐만이 아니겠지만 ) 정보를 은닉하면 시스템 개발 속도가 높아진다. ( 여러 컴포넌트를 병렬로 개발할 수 있기 때문에 ) 각 컴포넌트의 디버깅 속도가 빨라진다. 시스템 최적화가 더 쉽다. 소프트웨어의 재사용성이 높아진다. 단위 테스트를 진행하기 좋다. 멤버 ( 필드, 메서드, 중첩 클래스, 중첩 인터페이스 ) 에 부여할 수 있는 접근 수준은 네 가지다. private class 는 상위 클래스에서만 접근이 가능하다. protected 는 해당 패키지에서만 접근이 가능하고 public 은 모든 곳에서 접근할 수 있다. 클래스와 멤버에 대해서 effective java 에서 몇가지 가이드가 되어있다. 여기서 의아한 점은.. 2020. 7. 27.
자바 직렬화에 대한 생각정리 언젠가 내가 개발하고 있는 클래스에 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.
객체의 생성 지난번 빌더 패턴을 보면서 객체의 생성과 관리에 대해서 다시한번 생각해보는 계기가 되었다. 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.
Iterator design pattern 흔히 개발할때 컬렉션 프레임워크를 사용해서 데이터를 처리할때 for 문을 사용했었다. 그렇게 개발하던 도중에 다음과 같은 로직이 필요했고 지난번과 같이 for 문으로 처리할 계획을 했다. 요구사항 도서관 에서 '칼의 노래'는 제거하고 나머지는 2 를 붙이는 요구사항이 왔으면 어떻게 할 것인가? List books; @Before public void setUp() throws Exception { books = new ArrayList(); Book book = new Book("해리포터"); books.add(book); Book book2 = new Book("반지의 제왕"); books.add(book2); Book book3 = new Book("헝거게임"); books.add(book3); Bo.. 2020. 5. 28.
JPA 2차 캐시란 intro 우리는 개발할때 서비스에 데이터를 보여주기 위해서 애플리케이션에서 데이터베이스를 연결한다. 만약 실시간으로 변경되는데 영향도가 낮은 데이터를 보여주는데 매번 데이터베이스를 연결하면 어떨가? heap 메모리에서 데이터를 조회하는 것과 데이터베이스에서 데이터를 조회하는데 드는 시간비용을 비교한다면 수만에서 수십만 배 이상 비싸다고 한다. 그렇다면 인메모리 캐시를 이용해서 데이터를 저장한다면 훨씬 빠르게 데이터를 클라이언트에 보여줄 수 있지 않을까? 1차 캐시와 2차 캐시 2020/04/13 - [개발/spring-boot] - JPA 애플리케이션 영속성 관리 영속성 컨텍스트 내부에는 엔티티를 보관하는 영역이 있다. 이는 1차캐시라고 한다, 1차 캐시로도 이점이 많지만 애플리케이션 환경은 트랜잭션을.. 2020. 4. 26.