본문 바로가기

전체 글70

[Spring] IoC/DI 제어의 역전/의존성 주입 (1) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 스프링을 이해하는 데에 POJO(Plain Old Java Object)를 기반으로 스프링 삼각형이라는 애칭을 가진 IoC/DI , AOP, PSA라고 하는 스프링의 3대 프로그래밍 모델에 대한 이해가 필수다. 오늘은 IoC/DI에 대해서 알아보자. 프로그래밍에서 의존성이란? IoC(Inversion of Control / 제어의 역전) 라고도 하는 DI(Dependency Injection / 의존성 주입)를 알아보기 전에 프로그래밍에서 의존성이란 무엇인지 알아보자. 의사코드 자바로 표현 운전자가 자동차를 생산한다. new Car(); 자동차는 내부적으로 타이어를 생산한다. Car 객체 생성자에서 new Tire(.. 2021. 10. 2.
[Spring] 스프링이 사랑한 디자인 패턴 (2) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 이전글 : [Spring] 스프링이 사랑한 디자인 패턴 (1) [Spring] 스프링이 사랑한 디자인 패턴 (1) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 요리와 객체 지향 프로그래밍(OOP)을 비교하면 아래의 표와 같다. 요리 객체 지향 프로그래밍(OOP) 요 yeoonjae.tistory.com 템플릿 메서드 패턴(Template Method Pattern) 볼트이라고 하는 강아지와 키티이라고 하는 고양이를 키운다고 가정해보자. 볼트, 키티와 함께 재밌는 시간을 보내기 위해 클래스를 다음과 같이 2개 만들어보자. // Dog 클래스 public class Dog {.. 2021. 10. 1.
[Spring] 스프링이 사랑한 디자인 패턴 (1) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 요리와 객체 지향 프로그래밍(OOP)을 비교하면 아래의 표와 같다. 요리 객체 지향 프로그래밍(OOP) 요리도구 4대 원칙(캡! 상추다) 요리도구 사용법 설계 원칙(SOLID) 레시피 디자인 패턴 디자인 패턴은 실제 개발 현장에서 비즈니스 요구 사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중에서 많은 사람들이 인정한 베스트 프랙티스를 정리한 것이다. 디자인 패턴은 당연히 객체 지향 특성과 설계 원칙을 기반으로 구현되어 있다. 어댑터 패턴 (Adapter Pattern) 어댑터를 번역하면 변환기(converter)라고 할 수 있다. 변환기의 역할은 서로 다른 두 인터페이스 사이에 통신이 가능하게 하는 것이다.. 2021. 9. 30.
[7주차] 멘토링 키워드 👀 오늘부터 시작한 나와의 약속.. 키워드 정리는 멘토링 당일에 하기,, 멘토님께서 알아보면 좋을 것 같다고 하신 내용 말고도 공부할 게 많다. 그러니 미루지 말고 키워드 정리는 당일에 하자! 사실 요즘 일하고 공부하고,, 그동안의 피로가 쌓여서 2주동안 아무것도 안하고 누워있던 적이 꽤 많았다.. 조금 쳐지는 것 같다고 말한걸 캐치한 멘토님이 TIL(Today I Learned) 을 말씀해주셨고 주 3회씩 작성하기로 했다. 다시 동기부여도 되고 열심히 하려는 의지가 뿜뿜한다! 📝 Java 에서 StrongReference 와 WeakReference의 차이 자바의 참조 유형에는 약한 참조(Weak Reference), 강한 참조(Strong Reference), 소프트 참조(Soft Reference).. 2021. 9. 29.
데이터베이스 프로그래밍 기초 (3) 본 글을 📚 최범균의 JSP2.3 웹 프로그래밍 을 읽고 정리한 글입니다. 1.1 Statement를 이용한 쿼리 실행 시 작은 따옴표 처리 SQL 쿼리를 실행할 때 값에 작은따옴표가 들어가면 작은따옴표 두 개를 사용하는 형태로 변경해야 한다. 예를들어 "King's choice"와 같이 작은따옴표가 들어간 값으로 컬럼 값을 변경해야 할 경우 다음처럼 작은 따옴표를 두 개 사용해야 한다. update TABLENAME set SOMEFIELD = 'king"s choice' where ... String 클래스의 replaceAll()을 사용해서 치환하는 방법도 있다. 하지만 PreparedStatement를 사용하면 이런 치환 없이 따옴표가 포함된 것을 사용할 수 있다. 1.2 PreparedState.. 2021. 9. 28.
데이터베이스 프로그래밍 기초 (2) 본 글을 📚 최범균의 JSP2.3 웹 프로그래밍 을 읽고 정리한 글입니다. JSP 에서 JDBC 프로그래밍 하기 자바에서 데이터베이스 프로그래밍을 할 때에는 JDBC API를 사용한다. JDBC는 Java DataBase Connectivity의 약자로서 자바에서 데이터베이스와 관련된 작업을 처리할 때 사용하는 API이다. 자바는 DBMS의 종류에 상관없이 하나의 JDBC API를 사용해서 데이터베이스 작업을 처리할 수 있기 때문에, 일단 익혀두면 모든 DBMS에 대해서 동일한 방식으로 데이터베이스 작업을 처리할 수 있게 된다. 1.1 JDBC의 구조 JSP를 포함한 자바 어플리케이션에서 데이터베이스를 사용할 떄에는 데이터베이스 종류에 상관없이 JDBC API를 이용해서 데이터베이스에 접근한다. 각각의 .. 2021. 9. 28.
데이터베이스 프로그래밍 기초 (1) 본 글을 📚 최범균의 JSP2.3 웹 프로그래밍 을 읽고 정리한 글입니다. 1.1 데이터베이스와 DBMS 우리가 흔히 데이터베이스(Database)라고 부르는 것의 주요 목적은 데이터를 저장했다가 필요할 때에 사용하는 것이다. 데이터베이스를 관리하는 시스템을 DBMS(Database Management System)라고 부르며 주로 사용하는 DBMS로는 오라클, MySQL, MSSQL 서버 등이 있다. 데이터베이스는 데이터를 지속적으로 관리하고 보호하는 것을 주 목적으로 하기 때문에, DBMS는 데이터를 안정적으로 보관할 수 있는 다양한 기능을 제공하고 있다. 예를들어, 데이터의 손실이 발생하면 안 되기 때문에 DBMS는 트랜잭션(Transaction)을 보장하여 데이터의 신뢰성을 높여준다. 이외에도 몇.. 2021. 9. 27.
객체 지향 설계의 5대 원칙 (SOLID) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 객체 지향 설계의 5대 원칙이란 객체 지향 언어를 이용해 객체 지향 프로그램을 올바르게 설계해 나가는 방법이나 원칙을 말한다. 객체 지향 설계 5원칙(SOLID)은 로 아래와 같다. SRP (Single Responsibility Principle) : 단일 책임 원칙 OCP (Open Closed Principle) : 개방 폐쇄 원칙 LSP (Liskov Substitution Principle) : 리스코프 치환 원칙 ISP (Interface Segregation Principle) : 인터페이스 분리 원칙 DIP (Dependency Inversion Principle) : 의존 역전 원칙 위의 원칙들은 응.. 2021. 9. 27.
[Java] 자바가 확장한 객체 지향 (2) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 이전 글 : [Java] 자바가 확장한 객체 지향 (1) [Java] 자바가 확장한 객체 지향 (1) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 1. abstract 키워드 - 주상 메소드와 추상 클래스 추상메소드(Abstract Method)란 간단하게 설명하면 선언부는 yeoonjae.tistory.com 5. instanceof 연산자 인스턴스는 클래스를 통해 만들어진 객체이다. instanceof 연산자는 만들어진 객체가 특정 클래스의 인스턴스인지 물어보는 연산자이다. instatnceof 연산자의 결과는 boolean 형태이며 사용법은 아래와 같다. 객체_참조_.. 2021. 9. 27.
[Java] 자바가 확장한 객체 지향 (1) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 1. abstract 키워드 - 주상 메소드와 추상 클래스 추상메소드(Abstract Method)란 간단하게 설명하면 선언부는 있는데 구현부가 없는 메소드를 말한다. 추상 메소드를 하나라도 갖고있는 클래스는 추상클래스로 정의되어야 하며 추상메소드 없이 추상 클래스를 선언할 순 있다. 몸체가 없이 선언만 하는 것이 의미가 있을까? 왜 필요할까? 아래의 코드를 보며 이해해보자. 더보기 이전에 추상클래스와 인터페이스를 정리한 글이 있으니 궁금하다면 아래의 링크로 이동하면 확인이 가능하다. 2021.08.21 - [Language/Java] - [Java]추상클래스와 인터페이스(차이,공통점) [Java]추상클래스와 인터페.. 2021. 9. 27.