반응형
제육's 휘발성 코딩
반응형
article thumbnail
[토비의 스프링 3.1] 디자인 패턴 - 템플릿 메서드, 전략, 템플릿 콜백 패턴

3장 템플릿 객체지향 설계의 핵심 원칙인 OCP원칙은 확장에는 열려 있고 변경에는 닫혀있도록 설계하는 원칙이다. 이 원칙은 코드에서 고정되어 변하지않으려는 성질을 가진 코드와, 변경을 통해 다양해지고 확장하려는 성질을 나누어서 효율적인 구조로 만들어 주는 방식이다. 템플릿이란 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 독립적으로 추려내서 활용하는 방법을 의미한다. 3.1 다시보는 초난감 DAO public class UserDao { private DataSource dataSource; public UserDao() {} public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public vo..

article thumbnail
[토비의 스프링 3.1] 2장 JUnit 테스트 (JUnit4)
Book/토비의 스프링 3.1 2023. 1. 29. 21:05

2.1 UserDaoTest 다시보기 public static void main(String[] args) throws SQLException, ClassNotFoundException { UserDao dao = new UserDao(); User user = new User(); user.setId("sasca"); user.setName("jalgayo"); user.setPassword("jalgayo"); dao.add(user); System.out.println(user.getId() +" 등록 성공"); User user2 = dao.get(user.getId()); System.out.println(user2.getName()); System.out.println(user2.getPass..

article thumbnail
[토비의 스프링 3.1] 1장 오브젝트와 의존관계
Book/토비의 스프링 3.1 2023. 1. 24. 21:33

스프링은 자바를 기반으로 한 기술이다. 자바를 선택한 이유는 객체지향 프로그래밍이 가능한 언어라는 점이다. 자바 엔터프라이즈 기술의 혼란 속에서 잃어버렸던 객체지향 기술의 진정한 가치를 회복시키고, 그로부터 객체지향 프로그래밍이 제공하는 폭넓은 혜택을 누릴 수 있도록 기본으로 돌아가자는 것이 스프링의 핵심 철학이다. 따라서 스프링이 가장 많이 관심을 두는 대상은 오브젝트다. 이 오브젝트를 설계하고 구현해나가는 기준을 마련해주는 프레임워크의 형태로 제공한다. 개발 환경 m1맥, Spring 3.0.7, 이클립스 2022-12, JDK 1.8, MAVEN, MySQL mysql mysql-connector-java 8.0.25 cglib cglib 2.2.2 org.springframework spring-..

[Oracle] 오라클 환경 세팅 (튜닝 세팅)

오라클 튜닝 환경 세팅 오라클에서 SQL 튜닝 셋팅을 위해선 다음과 같은 3가지가 필요하다. 대용량 데이터를 저장할 테이블 스페이스와 사용자 계정 SQL문으로 대용량의 테이블을 구성 오라클 통계 정보 분석 테이블 스페이스 및 계정 생성 테이블스페이스란 테이블이 저장될 공간을 의미하며, 이를 구분지어 관리함으로 성능을 향상할 수 있다. 테이블은 기본 8G를 보관할 수 있고, 추가로 1G 단위로 확장할 수 있다. 오라클은 data block, extent, segment, tablespace 라는 논리적 개념으로 데이터를 관리한다. data block : 데이터를 저장하는 최소의 논리적 단위 extent : data block이 모인 단위 segment : extent가 모인 단위 tablespace : s..

article thumbnail
[이펙티브자바] 아이템19 : 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라
Book/Effective Java 2022. 8. 7. 18:16

상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라 상속용 클래스는 재정의할 수 있는 메서드들을 내부적으로 어떻게 이용하는지 문서로 남겨야 한다. 클래스의 API로 공개된 메서드에서 클래스 자신의 또 다른 메서드를 호출할 수도 있다. 또한 그 메서드가 재정의 가능 메서드(protected, public 중 final이 아닌 모든 메서드)라면 그 사실을 호출하는 메서드의 API 설명에 적시해야 한다. API 문서의 메서드 설명 끝에 종종 Implementation Requirements로 시작하는 절이 있다. 이 절은 그 메서드의 내부 동작 방식을 설명하는 곳이다. 이 절은 메서드 주석에 @implSpec 태그를 붙여주면 자바독 도구가 생성해준다. 해당 설명에 따르면 iterator 메서드..

article thumbnail
[이펙티브 자바] 아이템 18 : 상속보다는 컴포지션을 사용하라
Book/Effective Java 2022. 7. 29. 17:08

상속보다는 컴포지션을 사용하라 상속은 코드를 재사용하는 강력한 수단이지만, 잘못 사용하면 오류를 내기 쉬운 소프트웨어를 만들게 된다. 같은 프로그래머가 통제하는 패키지 안에서 상속한다면 안전할 수 있지만, 다른 패키지의 구체 클래스를 상속하는 것을 위험하다. (인터페이스 상속이 아닌 클래스 상속) 상속의 문제점 상속은 상위 클래스의 설계에 따라 캡슐화를 깨뜨리는 등의 하위 클래스에 문제를 일으킬 수 있다. 예를 들어 HashSet을 사용하는 프로그램에서 성능을 높이기 위해 처음 생성된 이후 원소가 몇개 더해졌는지 등의 기능을 추가했다고 생각해보자. import java.util.Collection; import java.util.HashSet; import java.util.List; public cla..

article thumbnail
[이펙티브 자바] 아이템 17 : 변경 가능성을 최소화하라
Book/Effective Java 2022. 7. 27. 17:56

변경 가능성을 최소화하라 String, BigInteger, BigDecimal 등은 자바 플랫폼 라이브러리에서 불변 클래스로 정의 된다. 불변 클래스란 인스턴스 내부 값을 수정할 수 없는 클래스를 의미한다. 불변 클래스는 가변 클래스보다 설계 및 구현이 쉬우며, 오류가 생길 여지가 적고 훨씬 안전하다. 불변 클래스 생성 규칙 객체의 상태를 변경하는 메서드(Setter)를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. 상속을 막는 대표적인 방법은 클래스를 final로 선언하는 것이며, 다른 방법도 있다. 모든 필드를 final로 선언한다. 시스템이 강제하는 기능을 이용해 설계자의 의도를 드러낸다. 새로 생성된 인스턴스를 동기화 없이 다른 스레드로 건네도 문제없이 동작하게끔 보장하는 데도 필요하다. ..

article thumbnail
[이펙티브 자바] 아이템 16 : public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라
Book/Effective Java 2022. 7. 27. 17:55

public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 class Point { public double x; public double y; } 다음과 같은 클래스 설계는 퇴보한 클래스이다. 이런 클래스는 데이터 필드에 직접 접근할 수 있기 때문에 캡슐화의 이점을 제공하지 못한다. API를 수정하지 않고는 내부 표현을 바꿀 수 없고, 외부 접근이 가능하기 때문에 불변식을 보장할 수 없으며, 외부에서 필드에 접근할 때 부수 작업을 수행할 수도 없다. class Point { private double x; private double y; public Point(double x, double y) { this.x = x; this.y = y; } // Getter & Setter } Ge..

반응형
반응형