JAVA 15

[JPA] JPA 매핑 - 기초

객체 매핑하기 @Entity : JPA가 관리할 객체 @Id : DB의 PK와 매핑할 필드 persistence.xml : JPA 속성 파일 hibernate.dialect 속성에 각 DBMS 언어 지원 EntityManagerFactory JPA는 Persistence 클래스에서 설정 정보를 읽는다. 이후 Persistence에서 EntityManagerFactory를 생성한다. EntityManagerFactory는 EntityManager를 생성한다. 매핑 어노테이션 @Column name : 필드와 매핑될 테이블의 칼럼 이름을 지정 insertable, updatable : T/F 설정, 읽기 전용 여부를 지정 nullable, unique length : 길이 제한 @Column(name = "..

JAVA/JPA 2021.03.16

[JPA] JPA 소개

SQL 중심 개발의 한계 다음 코드를 보자. public class Member{ private String memberId; private String name; //... } INSERT INTO MEMBER(MEMBER_ID, NAME) VALUES ... SELECT MEMBER_ID, NAME FROM MEMBER M UPDATE MEMBER SET ... 위 코드에서, Member 객체에 전화번호 정보에 해당하는 필드 tel을 추가하고자 한다. 우리는 Member 객체에 단순히 tel 필드를 추가하는 것에 더해, 모든 MEMBER 관련 쿼리에 tel에 관한 정보를 추가해줘야 한다. 엔티티 신뢰성 문제 MemberDAO에서 Member 객체 하나를 꺼내왔다고 가정하고, 이 객체를 member라 ..

JAVA/JPA 2021.03.16

[Spring] 의존성 주입 (DI, Dependency Injection)

객체 의존성 (Object Dependency) 한 객체가 다른 객체를 참조하고 있을 때, 의존성을 가진다고 한다. 다음 예시를 보자. class Controller{ private MemoryRepository repository = new MemoryRepository(); } Controller 클래스에서 new 키워드를 이용해 MemoryReopsitory 객체를 생성했다. 이 때, Controller 객체는 MemoryRepository 객체에 의존한다고 한다. 의존성 주입 (Dependency Injection) 위의 의존 관계에는 문제점이 하나 있다. 만약 MemoryRepository 클래스가 수정된다면, Controller 클래스 또한 수정해줘야 하기 때문이다. 즉, 두 클래스의 결합도(..

JAVA/Spring 2021.03.10

SOLID : 좋은 객체 지향 설계의 5원칙

단일 책임 원칙 (SRP, Single Responsibility Principle) 하나의 클래스는 하나의 책임만 가져야 하며, 클래스는 이러한 책임을 캡슐화 하여야 한다. 이는 곧 클래스가 변경될 때, 그 이유는 단 한 가지여야만 한다는 말과 같다. 즉, 변경이 발생할 때 파급 효과가 적을수록 좋은 객체 지향 설계이다. class BookReader{ public String ReadBook(Book book); public void EditBook(Book book, int line, ...); } 위와 같은 클래스는 SRP를 만족하지 못한다. 왜일까? 현재 BookReader 클래스는 두 개의 책임을 가진다. Book 객체를 읽는 것(Read)과, Book 객체를 편집(Edit)하는 것이다. 만약..

JAVA 2021.03.10

다형성 (Polymorphism)

스피커를 하나 구매하려는 상황을 가정해 보자. 우리가 고를 수 있는 제품은 A, B, C사에서 제조된 제품들이다. 우리는 어떤 제품을 사더라도, 음악을 재생할 수 있는 기능만 있다면 목표는 달성할 수 있다. 더 좋은 음질, 더 다양한 기능을 가진 제품을 구매할 수도 있지만, 아무튼 어떤 스피커를 사더라도 "음악을 듣는다" 라는 목표는 달성할 수 있을 것이다. 그런데, 우리가 스피커로 음악을 듣기 위해 스피커가 어떤 원리로 음악을 재생하는지 알 필요가 있을까? 물론 없다. 우리는 그저 스피커에서 나오는 음악을 듣기만 하면 된다. 우리가 구매했던 스피커에 음성 인식 기술이 새로 업데이트되었다! 만약 스피커에 어떤 부가적인 기능이 추가되거나 삭제되어도, "스피커로 음악을 듣는다" 라는 우리의 원래 목표는 변함..

JAVA 2021.03.09