일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바ORM표준JPA프로그래밍
- 운영체제
- MySQL
- 네트워크
- 아두이노
- 포인트클라우드
- 자바
- 알고리즘
- JPA
- Jetson
- 파이썬
- 디자인패턴
- 장애물인식
- 논문리뷰
- 배달로봇
- 영속성컨텍스트
- Python
- Database
- Java
- cartograhper
- 이펙티브자바
- persistance context
- 딥러닝
- Spring Batch
- 논문
- 프로그래머스
- 자료구조
- Hibernate
- DeepLearning
- 자율주행
- Today
- Total
목록전체 글 (56)
제리 devlog
애플리케이션은 발전하면서 점점 복잡성이 커진다. 지속 가능한 애플리케이션을 개발하는 일은 끊임없이 증가하는 복잡성과 의 싸움이다. 복잡성을 제어하지 못하면 유지보수하기 어려운 애플리케이션이 된다. 객체지향 프로그래밍의 경우 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성을 제어할 수 있는 방법이 존재하기 때문에 많은 애플리케이션이 객체지향 언어로 개발한다. 비즈니스 요구사항을 정의한 도메인 모델을 객체로 모델링하면 객체가 지니는 장점을 활용할 수 있다. 하지만 문제는 어떻게 객체를 저장해야할지다. 예를 들어 유저에 대한 정보를 담는 인스턴스를 생성했다면 메모리가 아닌 영구적인 저장소에 저장해야한다. 단순히 객체의 속성을 모두꺼내와 데이터베이스에 저장할 수도있지만, 만약 객체가 상속을 받거나..
SQL을 직접 다룰 때 발생하는 문제를 확인하기위해 아래 예시를 참고해보자. 회원 테이블은 이미 만들어졋다고 가정하고 회원을 CRUD하는 기능을 개발해보겠다. 먼저 회원 객체를 만든다. public class Member { private String memberId; private String name; ... } 다음은 데이터베이스에 연결할 회원용 DAO를 만든다. public class MemberDAO { public Member find(String memberId) { ... } } 이제 MemberDAO의 find() 메소드를 만들어 회원을 조회하는 기능을 개발해보자. 일반적인 순서는 아래와 같다. 1. 회원 조회용 SQL작성 SELECT MEMBER_ID, NAME FROM MEMBER M..
많은 클래스가 하나 이상의 자원에 의존한다. 의존이라는 용어는 spring을 경험해봤다면 흔히 들었을 것이다. 하지만 의존 관계에 대해서 다시한번 짚어보고 자원을 명시하지 말고 의존 객체 주입을 사용하라는 의미를 생각해보자. 의존 관계는 어떤 것인가? 하나의 예시를 보자 public class Car(){ Wheel wheel = new SmallWheel(); public Car(){}; } public class SmallWheel extends Wheel(){ String modelName = "A"; int size = 50; public SmallWheel(){} } 두개의 클래스가있다. Car클래스는 SmallWheel을 입력받아 사용한다. 이때 Car객체는 SmallWheel과 의존 관계가 ..
얼마전까지 의존성 주입에 @Autowired방식을 맹목적으로 사용해왔다. 다른 방식이 있는 줄은 모르고 어노테이션을 사용하면 의존성 주입이 간편해서 이런 방식으로 해왔다. 그러다 우연히 의존성 주입은 생성자를 사용한 방식이 좋다는 글을 몇차례 접한뒤 좋은 이유에 대해서 알아보고 실제로 적용해보기로 했다. 의존성 주입 3가지의 방식 첫번째, Field Injection Field Injection은 의존성을 주입하고 싶은 필드에 @Autowired 어노테이션을 붙여주면 의존성이 주입된다. @RestController public class PostController { @Autowired private PostService postService; } 두번째, Setter based Injection set..
이번 item은 책 분량상 약 1쪽이 조금 넘는 분량이기 때문에 다루는 내용이 굉장히 간략하다. 따라서 자주 등장했던 static의 개념도 추가로 다뤄 보고자한다. 책의 도입부는 이렇게 시작된다. "단순히 static 메서드와 static 필드만을 담은 클래스를 만들고 싶은 때가 있을 것이다. 객체 지향적으로 사고하지 않는 이들이 종종 남용하는 방식이기에 그리 곱게 보이지는 않지만, 분명히 나름 쓰임새가 있다. 예컨데 java.lang.Math, java.util.Arrays처럼 기본 타입 값이나 배열 관련 메서드들을 모아놓을 수 있다." 여기서 객체 지향적인 사고란 어떤 것을 의미하는지 생각해보기전 static의 특성에 대해 생각해보자. new 키워드를 통해 생성된 객체는 heap영역에 생성되고 GC에..
싱글톤 : 인스턴스를 오직 하나만 생성할 수 있는 클래스 싱글톤 패턴을 왜 사용할까? 인스턴스를 오직 하나만 생성하므로서 객체를 여러번 생성할 필요가 없고 객체를 공유할 수 있음. 스프링에서 관리하는 bean은 싱글톤 패턴으로 만들어져 의존성을 주입할때 동일한 객체를 사용함. DBCP(DataBase Connection Pool)의 경우에도 DB와 애플리케이션을 연결하기위해 매번 객체를 생성하여 관리하는 것보다 최초의 생성된 객체를 재사용하면서 connection을 관리하는게 더 효율적임 싱글톤을 만드는 3가지 방법 첫번째, public static 맴버가 final로 선언된 경우 public class Elvis{ public static final Elvis INSTANCE = new Elvis();..
public class NutritionFacts { private final int servingSize; //(ml, 1회 제공량) 필수 private final int servings; //(회, 총 n회 제공량) 필수 private final int calories; //(1회 제공량당) 선택 private final int fat; //(g/1회 제공량) 선택 private final int sodium; //(g/1회 제공량) 선택 private final int carbohydrate; } 식품 영양정보를 나타내는 class이다. 필드는 총 6가지가 있다. 1. 점층적 생성자 패턴 public class NutritionFacts { private final int servingSize; /..
장점 네이밍을 통해 직관적으로 파악할 수 있다. 생성자의 매개변수 타입이 겹칠 경우 사용이 사용할 수 있다. 호출될 때마다 인스턴스를 생성하지 않아도된다. 반환 타입의 하위 타입으로 객체를 반환 할 수있다. static method를 작성하는 시점에 반환할 객체의 클래스가 존재하지 않아도 된다. 단점 static method만 제공하면 하위 클래스를 만들 수 없다. static method는 프로그래머가 찾기 어렵다. 객체의 인스턴스를 얻기위해 보편적으로 public한 생성자를 사용하는 방법이 있다. public class Fruit{ int price; public Fruit(int price){ this.price = price; } public static void main(String[] args..