개발서적
[자바 ORM 표준 JPA 프로그래밍] 2. JPA 시작
Reference. 자바 ORM 표준 JPA 프로그래밍 책 목차 및 이전 글 더보기 들어가기 전 JPA 특징, Q&A 1. JPA 소개 1.1 SQL을 직접 다룰 때 발생하는 문제점 1.2 패러다임의 불일치 1.3 JPA란 무엇인가? 2. JPA 시작 예제 프로젝트 구조 src / main -java -jpabook/start -JpaMain.java -Member.java -resources -META-INF -persistence.xml pom.xml 2.4 객체 매핑 시작 Member.java @Entity @Table(name = "MEMBER") public class Member{ @Id @Column(name = "ID") private String id; @Column(name = "NAM..
[자바 ORM 표준 JPA 프로그래밍] 1.3 JPA란 무엇인가?
Reference. 자바 ORM 표준 JPA 프로그래밍 책 목차 및 이전 글 더보기 들어가기 전 JPA 특징, Q&A 1. JPA 소개 1.1 SQL을 직접 다룰 때 발생하는 문제점 1.2 패러다임의 불일치 1.3 JPA란 무엇인가? JPA(Java Persistence API) : 자바 진영의 ORM 표준 기술 ORM(Object-Relational Mapping) : 객체와 관계형 데이터베이스를 매핑하는 기술 → 객체와 테이블 패러다임 불일치 문제를 개발자 대신 해결 1.3.1 JPA 소개 엔터프라이즈 자바 빈즈(EJB) 안에 엔티티 빈이라는 ORM 기술이 포함 → 복잡하고 기술 성숙도도 떨어지며 자바 엔터프라이즈(J2EE) 서버에서만 동작 하이버네이트 오픈소스 ORM 프레임워크가 등장 → EJB보다..
[자바 ORM 표준 JPA 프로그래밍] 1.2 패러다임의 불일치
Reference. 자바 ORM 표준 JPA 프로그래밍 책 목차 및 이전 글 더보기 들어가기 전 JPA 특징, Q&A 1. JPA 소개 1.1 SQL을 직접 다룰 때 발생하는 문제점 1.2 1.2 패러다임의 불일치 애플리케이션이 발전하면 내부 복잡도가 상승 → 복잡도가 증가하면 유지보수하기가 어려움 비즈니스 요구사항을 정의한 도메인 모델도 객체로 모델링하면 객체지향 장점을 활용 가능 → 부모 객체를 상소받거나, 다른 객체를 참조하고 있다면 저장하기 쉽지 않음 → Ex)1. 회원 객체 저장이 필요 2. 회원 객체가 팀 객체를 참조 3. 회원 + 팀을 저장해야 함 (단순 회원 객체만 저장하면 팀 객체를 잃어버리는 문제 발생) 객체와 관계형 데이터베이스는 지향하는 목적이 다름, 둘의 기능과 표현 방법도 다름 ..
[자바 ORM 표준 JPA 프로그래밍] 1.1 SQL을 직접 다룰 때 발생하는 문제점
Reference. 자바 ORM 표준 JPA 프로그래밍 책 목차 및 이전 글 더보기 들어가기 전 JPA 특징, Q&A 1. JPA 소개 1.1 SQL을 직접 다룰 때 발생하는 문제점 1.1.1 반복, 반복 그리고 반복 예제1. public class Member { private String memberId; private String name; ... } public class MemberDAO { public member find(String memberId{...} } 기존의 개발 순서 1. 회원 조회용 SQL을 작성한다. SELECT MEMBER_ID, NAME FROM MEMBER M WHERE MEMBER_ID = ? 2. JDBC API, Mybatis를 사용해서 SQL을 실행한다. Resu..
[자바 ORM 표준 JPA 프로그래밍] JPA 특징, Q&A
책에 들어가기 전, 궁굼했던 사항들에 정리 (JPA 특징, Q&A) JPA를 공부하기전 전, 궁굼했던 것들을 글쓴이가 책을 통해 정리한 부분이 있어 먼저 작성한다. 1. JPA 특징 지루하고 반복적인 CRUD SQL을 알아서 처리 - mybatis 쿼리 SELECT name FROM players LIMIT 1 SELECT name, age FROM players LIMIT 1 INSERT INTO players (name, age) VALUES (#{name}, #{age}) UPDATE players SET age = #{age} WHERE name = #{name} DELETE FROM players WHERE name = #{name} - JPA List users = userRepository...
[토비의 스프링 - Vol.2] 1장 - 1.2.2 빈 등록 방법
1. XML: 태그 - 태그를 사용하는 건 가장 단순하면서 강력한 설정 방법. - 기본적으로 id와 class라는 두개의 어트리뷰트가 필요 (id 생략 가능) ... - 은 다른 빈의 태그 안에 정의가 가능 (이때는 id, 이름을 지정하지 않음) 이러한 빈을 내부 빈(inner bean)이라 하며, 다른 빈에서는 참조할 수 없음. 강한 결합이 필요한 경우에 사용 2. XML: 네임스페이스와 전용 태그 - 태그 외에 전용 태그를 사용해 빈을 등록하는 방법 - 스프링의 빈의 두가지 분류 1. 애플리케이션의 핵심 코드를 담은 컴포넌트 2. 서비스 또는 컨테이너 설정을 위한 빈 - 스프링은 DI의 원리로 애플리케이션 컨텍스트 자신에게 필요한 정보도 오브젝트 형태로 DI해서 사용 - 이를 통해 컨테이너의 유연한 ..
[토비의 스프링 - Vol.1]7.6.2 빈 스캐닝과 자동와이어링 실습 중 에러 java.lang.IllegalStateException: Failed to load ApplicationContext
[ p.676 ] xml로 설정했던 부분을 자바로 변경을 한 후 TestApplicationContext.java에서 설정한 것을 리팩토링 하는 작업 중에 에러가 발생했다. @Configuration @EnableTransactionManagement public class TestApplicationContext { .... @Bean public UserDao userDao(){ return new UserDaoJdbc(); } .... } 위에 코드로 실행할 때는 테스트 코드가 정상적으로 작동했다. 하지만 아래처럼 코드를 변경하니 에러가 발생... @Configuration @EnableTransactionManagement @ComponentScan(basePackages = "user") pub..
[토비의 스프링 - Vol.1]7.5.2 내장형 데이터베이스 - 2
스프링에서는 내장형 데이버베이스를 지원한다. 자바에서는 Derby, HSQL, H2가 대표적인 내장 데이터베이스이다. 내장형데이터베이스란? 인메모리 데이터베이스(In-memory Database)는 데이터 스토리지의 메인 메모리에 설치되어 운영되는 방식의 데이터베이스 관리 시스템 인메모리 데이터베이스는 디스크에 최적화된 데이터베이스보다 더 빠른데 그 까닭은 디스크 접근이 메모리 접근보다 느리기 때문이며, 이 데이터베이스는 내부 최적화 알고리즘이 더 단순하며 더 적은 CPU 명령을 실행한다. 메모리의 데이터에 접근하면 데이터를 조회할 때 검색 시간이 줄어들며 디스크보다 더 빠르고 더 예측 가능성 성능을 제공한다. 출처: https://ko.wikipedia.org/wiki/%EC%9D%B8%EB%A9%94..