분류 전체보기(361)
-
6. Command Pattern
문제 지수는 친구로부터 특별한 선물을 받았다. 그건 리모컨인데 내가 명령을 입력하면 이를 동작 시켜주는 특별한 리모컨이다. 그래서 집에서 사용하는 여러 가전제품을 사용하려고 명령을 등록하려고 하는데 문제가 생겼다. 각각의 가전제품에서 명령을 실행하는 방법이 달랐던 것이다. 전등은 켜고 끌 때 on(), off()로 수행되고 선풍기는 high(), medium(), low(), off()와 같이 단계 별로 바람 세기를 조절할 수 있게 되어있다. 그 외에 TV, 냉장고 등 많은 가전제품이 서로 다르게 구현되어 있다. 이 문제를 어떻게 해결해야 할까? 해결 방안 여러 객체의 행위를 통일하고 싶을 때 우리는 인터페이스를 사용했다. 이번에도 인터페이스를 만들어야 겠다. 그렇다면 어떻게 만들까? 일단 리모컨에서는 ..
2021.10.14 -
[JPA/Hibernate] Hibernate 기초
1. Hibernate란? Hibernate는 객체 지향 프로그래밍과 관계형 데이터베이스 설계의 관점 차이를 해결하여 개발자가 더 객체 지향 프로그래밍에 집중할 수 있도록 해주는 ORM 중 하나이다. Java 진영에서는 JPA가 표준 인터페이스로 있으며 구현체 중 가장 많이 사용되는 것이 Hibernate이다. 2. 환경 설정 파일 gradle 또는 maven 프로젝트는 기본적으로 src/main 디렉터리에서 java와 resources 패키지로 나뉘는데 resources에 대부분의 환경 설정 파일 및 정적 파일들이 포함된다. Hibernate의 환경 설정도 resources에서 작성하면 된다. 환경 설정의 대표적인 파일 형식으로 properties와 xml이 있다. 파일 이름은 hibernate.pro..
2021.10.12 -
[Gradle] Gradle 기초
1. Gradle, slf4j, logback, junit, assertj 1. Gradle 1. task 하나의 작업 단위를 묶어놓은 것이다. 터미널에서 gradle run 을 입력하면 아래 task를 실행할 수 있다. apply plugin: 'java' task run(type: JavaExec) { mainClass: 'exercise.HelloWorld' classpath: sourceSets.main.runtimeClasspath } task runAfterCompile(dependsOn: classes, type: JavaExec) { mainClass: 'exercise.HelloWorld' classpath: sourceSets.main.runtimeClasspath } apply plu..
2021.10.12 -
[Heroku] spring-boot 배포 시 h10 에러
분명 강의대로 똑같이 했는데 heroku에서 h10 에러가 뻥뻥 터졌다. 검색해보니 동적 포트 번호랑 jar 파일 지정 등 방법이 나왔는데 jar 파일을 지정해 주고 나서 3시간의 삽질이 끝났다. application.properties에 포트 번호를 지정해주는 건 아무 상관이 없었다. heroku 로그를 보면 heroku에서 지정하는 포트로 바인딩된다. 해결 방법 먼저 로컬에서 빌드하고 그 빌드 파일 이름을 복사해서 Procfile에 설정한다. 나는 bootJar를 설정해서 빌드 시 생성되는 jar 파일 이름을 바꾸었다. // build.gradle // ...other settings bootJar { archivesBaseName='bookStore' archiveFileName='bookStore..
2021.09.24 -
[Heroku] Task :compileJava FAILED 오류
Travis CI와 Heroku를 연동하여 배포하던 도중 오류가 발생했다. 내 프로젝트는 openjdk11을 쓰고 있었는데 heroku에서 빌드할 때 사용한 자바 버전은 jdk1.8이었다. 자바 버전 충돌로 인해 실패한 것이다. 바로 구글에 heroku java 11 로 검색하니 공식 문서가 나왔다. 프로젝트에 system.properties를 만들고 아래 내용을 넣으라는 것이었다. 이를 추가하고 커밋 후 푸시하니 정상적으로 빌드가 되었다. 참고 사이트: https://devcenter.heroku.com/changelog-items/1489 Java 11 now available | Heroku Dev Center Java 11 now available Change effective on 25 Sept..
2021.09.24 -
5. Singleton Pattern
싱글톤 패턴 해당 클래스의 인스턴스를 단 하나만 만들고 해당 인스턴스를 필요로 하는 객체들이 공유하여 사용하도록 하는 패턴이다. public class SingletonObj { // static 멤버로 해당 클래스를 만들어놓았다. private static SingletonObj singletonObj; // other fields... // 생성자를 private으로 만들어 인스턴스를 생성하지 못하게 막았다. private SingletonObj() {} // 이 메서드를 통해 이 클래스의 인스턴스에 접근하도록 한다. public static SingletonObj getInstance() { if (singletonObj == null) { singletonObj = new SingletonObj(..
2021.09.15