본문 바로가기

분류 전체보기67

[Spring] 스프링 핵심 원리 (기본) - 2. 설계와 개발, 객체 지향 원리의 적용 2. 스프링 핵심 원리 - 예제 2.1 주문 도메인 설계 주문 도메인의 협력, 역할, 책임 주문 도메인 전체 주문 클래스 다이어그램 주문 객체 다이어그램 2.2 주문 도메인 개발 public class OrderServiceImpl implements OrderService { private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); // private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); } 위 코드는 OCP와 DIP 원칙을 동시에 어긴다. 기능을 확장하기 위해 클라이언트 코드에 영향을 주기 때문에 OCP를 위반하고, 주문 서비스 클라이언트(OrderServ.. 2023. 2. 2.
[Spring] 스프링 핵심 원리 (기본) - 1. 객체 지향 설계와 스프링 1. 개괄 1.1 스프링부트(Spring Boot)란 스프링은 편하게 사용하기 위한 프레임워크이다. 본질적으로 스프링이란 자바(Java) 기반 프레임워크이기 때문에 '객체 지향' 특징을 잘 살려낼 수 있어 좋은 객체 지향 애플리케이션을 개발할 수 있도록 지원해주는 도구이다. 1.2 객체 지향 특징 객체 지향 프로그래밍의 의미는 컴퓨터 프로그램을 명령어 목록으로 보는 것이 아닌 여러 개의 독립적인 객체 단위로 보는 것을 말한다. 각 객체는 서로 메세지를 주고 받고 데이터를 처리할 수 있도록 '협력'하고, 프로그램을 갈아 끼우듯이 '유연'하고 '변경'이 용이하게 만들어주기 때문에 대규모 소프트웨어 개발에 많이 사용한다. 이를 위해, 가장 중요한 특성으로 추상화, 캡슐화, 상속성, 다형성을 갖는데, 이중에 '.. 2023. 2. 2.
[Database] ORM(Object Relation Mapping) 1. ORM 개념 이해 JDBC에서 ResultSet과 POJO class를 매핑하는 코드를 매번 짜는 것이 불편해서 만들어진 기술(Library)을 ORM(Object-Relational Mapping)이라고 한다. 객체와 Relational Model(관계형 데이터베이스 모델)을 매핑할 수 있는 기능을 갖고 있다. 하나의 테이블이 하나의 Java Class에 해당하고, FK와 같은 부가적인 기능은 함수로 제공한다. Hibernate로 대표되는 현대 ORM은 단순히 데이터 매핑 뿐만 아니라 데이터의 캐시, 세션, 라이프사이클 관리 기능까지 더해져서 그 기능이 방대하다. 2. JPA ORM의 유용성이 입증되고 나니 Hibernate, MyBatis, TopLink, CoCobase 등 ORM을 구현하는 .. 2023. 1. 24.
[Database] JDBC - Prepared Statement, CallableStatement 1. PreparedStatement Statement의 subinterface이며, parameterized query를 사용할 때 활용한다. 변수를 사용할 수 있기 때문에 Statement 종류 중 가장 많이 활용된다. 또한, 여러 종류의 쿼리를 사용하지만 컴파일은 한 번만 하므로 성능상 이득이 있다. 쿼리에서 parameterized하고 싶은 부분을 '?' (물음표)로 작성하고, 해당 부분에 들어갈 파라미터는 PreparedStatement의 함수를 이용해서 세탕한다. 예) "insert into table value(?, ?)" PreparedStatement 주요 메소드 PreparedStatement에는 Statement의 인터페이스를 모두 구현한다. public void setInt(int .. 2023. 1. 19.
[Database] JDBC - Statement, ResultSet 1. Statement Statement를 이용해서 실제 수행할 쿼리를 작성할 수 있다. 수행 결과를 ResultSet 객체로 받아오고, 정적 쿼리를 작성할 수 있다. Statement 주요 메소드 ResultSet executeQuery(string sql) SQL을 수행하고 ResultSet을 받아온다. 결과를 받아오기 때문에 주로 SELECT문 작성 시 사용 int executeUpdate(string sql) INSERT, UPDATE, DELETE 또는 DDL 등 결과를 받아오지 않는 SQL 작성 시 사용 return 값은 변경사항이 적용된 row의 수이다. 결과가 없다면, 0을 리턴 boolean execute(string sql) 여러 개의 결과를 얻어오는 SQL문 작성 시 사용 첫 번째 결.. 2023. 1. 17.