본문 바로가기
반응형

Delvelopment60

[Design Pattern] 옵저버 패턴, 감시자 패턴 (Observer Pattern) 옵저버 패턴은 일련의 객체 사이에서 일대다 관계를 정의한다. 한 객체의 상태가 변경되면 그 객체에 의존하는 모든 객체에 연락이 간다. 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one to many)의존성을 정의한다. 느슨한 결합(Loose Coupling)은 객체들이 상호작용할 수는 있지만 ,서로를 잘 모르는 관계를 의미한다. 느슨한 결합을 활용하면 유연성이 좋아지고 옵저버 패턴은 느슨한 결합을 보여주는 예이다. 주제(subject)는 옵저버(observer)가 특정 인터페이스를 구현한다는 사실만 안다. 옵저버(observer)는 언제든지 새로 추가할 수 있다. 새로운 형식의 옵저버(observer)를 추가할 때도 주제(subject.. 2022. 5. 16.
[Design Pattern] 전략패턴(STRATEGY PATTERN) 전략패턴(Strategy Pattern)은 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해준다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다. 동일 계열의 알고리즘군을 정의하고, 각 알고리즘을 캡슐화하며, 이들을 상호교환이 가능하도록 만든다. 알고리즘을 사용하는 클라이언트와 상관없이 독립적으로 알고리즘을 다양하게 변경 할 수 있게한다. 객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화 하는 인터페이스를 정의하여, 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법이다. 전략 패턴은 전략 클래스를 캡슐화 하기 위한 노력을 합니다... 2022. 5. 16.
[Spring] multiple Datasource 설정과 JPA와 Mybatis 연동 그리고 Querydsl 설정까지 (h2, mysql, mssql, rds) 기존 JPA에 RDS를 주로 개발하던 도중. 레거시 시스템의 db 연동이 필요한 시점이 왔다. 데이터 마이그를 하고싶은데 백오피스에 대한 대응을 내가 다 할 수 없으니.. 뭐 어쩌겠어.. 데이터 넣어줘야지 그래서 multi datasource에 대한 작업을 시작.. 우선 설정에 필요한 내용은. Database 정보 JPA에서 사용할 Entity Package 경로 Hibernate 설정 Mybais 에서 사용할 mapper package 경로 application.yml Database 정보들이 필요하다. spring: config: activate: on-profile: local datasource: jdbc-url: jdbc:mysql:// username: password: driver-class.. 2022. 5. 4.
[Spring Hibernate] java.sql.SQLSyntaxErrorException: Unknown table 'SEQUENCES' in information_schema Error Spring 프로젝트에서 JPA를 사용하던 도중 multi DataSource를 적용할 일이 발생했다. 설정을 하던 도중 java.sql.SQLSyntaxErrorException: Unknown table 'SEQUENCES' in information_schema Error hibernate 설정에 "dialect" 설정을 PostgreSQL로 설정을 해뒀던것.. 내가 설정한 db는 Mysql이였기에 문제 발생. 아래 DatabaseConfig.class에 hibernate 설정을 공유한다. 알맞은 dialect 설정을 진행하면 된다. 아래는 multi Datasource설정을 위해 컨피그 파일로 분리한 것이고 application.yml에 설정이 기본적으로 사용되니 그곳에서 변경하시면 됩니다. pu.. 2022. 5. 4.
[H2] (General error: "The write format 1 is smaller than the supported format 2 [2.1.210/5]" [50000-210] HY000/50000) 로컬 환경 MAC OS H2 (2.1.210) 자연스래 부트 서버 올렸는데 왜 h2가 안켜졌지? 이러고 있던중.. 내가 뭘 했었지? 라고 고민하던순간.. brew update 진행했었구나.. h2가 갑자기 안켜지는 상황이 발생.. (내시간...) 2.1.210 버전으로 업됬는데 갑자기 실행이 안된다. http://www.h2database.com/html/download.html h2 2.1.210 General error: "The write format 1 is smaller than the supported format 2 [2.1.210/5]" [50000-210] HY000/50000 뭐니 갑자기.. 위 에러가 발생해서 db 저장소 파일을 삭제했고.. 하고 나니 아래 에러 발생. Database.. 2022. 3. 8.
[Java] Synchronize (동기화) 방법 3가지 동기화는 여러 개의 쓰레드가 하나의 자원(리소스)에 접근하려 할 때 주어진 순간에는 단 하나의 쓰레드만 접근 가능 하도록 하는 것이다. 둘 이상의 쓰레드가 공동의 자원(파일이나 메모리 블록)을 공유하는 경우, 순서를 잘 맞추어 다른 쓰레드가 자원을 사용하고 있는 동안 한 쓰레드가 절대 자원을 변경할 수 없도록 해야한다. 만약 한 쓰레드가 파일에서 레코드를 수정하는데, 다른 쓰레드가 동시에 같은 레코드를 수정하면 심각한 문제가 발생할 수 있기 때문입니다. 이런 상황을 처리할 수 있는 한 방법은 관련된 쓰레드에 대한 동기화를 하는 것이다. 동기화를 하는 방법 → synchronized함수를 만들어 사용 → synchronized블록 사용. Thread-safe 하기 위한 일이다. Synchronized 키워.. 2022. 2. 20.
반응형