Programming/Spring, SpringBoot
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
쉽게 말하면 자원(resource)의 표현(representation)을 상태(state)로 전달(transfer)한다 ! - 자원 : 해당 소프트웨어가 관리하는 모든 것 (문서, 그림, 데이터 등등) - 표현 : 그 자원을 표현하기 위한 이름 - 상태(정보) 전달 : 데이터가 요청되어지는 시점에서 자원의 상태 전달. (JSON / XML 형태로 주고 받는 것이 일반적) => HTTP Method를 통해 CRUD 적용 CREATE POST (생성) READ GET (조회) UPDATE PUT (수정) DELETE DELETE (삭제) HEAD HEAD (header 정보 조회) - 자원이 있는 쪽이 server / 자원을 요청하는 쪽이 client - REST API (Application Program..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/c7idAY/btszbtvjHaX/elKILu9f3GhvSnfoh3P9GK/img.png)
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
1. pom.xml 과 persistence.xml 파일 설정 (이 부분은 여기서 확인 가능!) 2. App.java (main) 메인을 작성해놓고 그냥 testcode로 실습하였다. (AppTest.java) 3. Major 전공 (필드 : id, majorName) / Student 학생정보 (필드: id, studentName, majorid) 클래스 생성 간단하게 학생정보 안에 전공 테이블의 전공id값을 넣으려는 것! 쿼리문으로 짜려면 join으로 선택하여 넣고 빼고 다 해야하는데... 이걸 자동으로 해주다니....! ** Major 클래스 생성 1. 테이블 엔티티 생성 : @Entity 2. 프라이머리 키값 설정 : @Id 3. 프라이머리 키 밸류 설정 : 시퀀스로 설정하고 싶다. @Genera..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bZ2xBy/btszi5UNdvO/DfalHeAC75Am6Kk9WbNJH0/img.png)
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
1. 엔티티 애너테이션 후 PRIMARY KEY값에 고유의 시퀀스를 자동적으로 설정해주고 싶다. 이때 ? => @Id, @GeneratedValue(strategy = GenerationType.SEQUENCE)로 설정을 해주면 된다~~! 이렇게 설정을 해주었다. 결과는? 뭔가 ID값이 고유하게 설정이 되었는데 이상한 점은 자꾸 MAJOR2 테이블과 STUDENT2 테이블의 시퀀스 값이 공유되어서 시퀀스 값이 띄어진다... 오잉... 알고보니 시퀀스를 따로따로 만들어줄 설정이 필요하다. 이때 SEQUENCE GENERATOR를 만들어주어야 한다. > 이 시퀀스 제너레이터가 시퀀스를 만들어주고.. 내가 이 시퀀스 만들었으니까 이걸로 사용해라~ 라고 언급해주면 된다. 1) @SequenceGenerator(..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bL9Wxr/btszbwZLkIB/qcvTZQjtbKoTN56KauBky0/img.png)
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
https://hehesim.tistory.com/59 JPA (Java Persistence API) 기초/설정 * 개념 정리 1) JPA (Java Persistence API) : 자바 진영에서 ORM기술의 표준으로 자리잡은 인터페이스의 집합을 의미 2) ORM (Object Relational Mapping) : Java의 객체 + 데이터베이스 테이블(릴레이션) + 서로 연결( hehesim.tistory.com 이어서.... Persistence Context (PC)의 라이프 사이클을 배워봅시다... 1. Create - EntityManager가 생성되면 영속성 컨텍스트가 생성된다. >> EntityManager manager = factory.createEntityManager(); 2. ..
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
JPA가 뭐였지? > 결국은 쿼리문 없이 데이터를 이리저리 움직이는 것... 이번에는 엔터티와 직접 아키텍쳐...?를 따라가 보자... 1. Entity : 데이터 베이스 테이블과 맵핑되는 자바 클래스로 데이터를 포함하지만 중요한 로직은 포함하지 않는다. 1) @Entity 애너테이션 달기. 이 때 JPA가 엔티티 객체를 생성할 때 내부적으로 기본 생성자를 사용하므로 꼭 !!! 기본 생성자 작성 필수 접근 제어자는 `protected` 적용 권장. 값 저장할 필드에는 final 사용 불가. 2) @Id, @GeneratedValue 애너테이션 달기 : PRIMARY KEY 설정 IDENTITY : 기본 키의 생성을 DB에게 위임 SEQUENCE : DB의 시퀀스 사용해서 기본키 할당 (오라클만 가능) T..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/6GJua/btszbOSqnIo/i1N2Cd2wUKdqLMhayXIh11/img.png)
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
* 개념 정리 1) JPA (Java Persistence API) : 자바 진영에서 ORM기술의 표준으로 자리잡은 인터페이스의 집합을 의미 2) ORM (Object Relational Mapping) : Java의 객체 + 데이터베이스 테이블(릴레이션) + 서로 연결(mapping) → 간단하게 말하면 별도의 SQL문 작성 없이 Java 코드만으로 DB에 데이터를 저장 가능 3) Persistence 지속성 : 애플리케이션을 여러 번 실행하더라도 데이터가 유지되는 성질. & 애플리케이션 내 Entity를 DB와 같은 저장 매체에 저장하는 것. ** JPA Architecture - EntityManagerFactory : EntityManager를 생성할 수 있는 공장 - EntityManager :..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bdIJtC/btsy8bmWsIY/i3K29k6rpCN578EJRhKkk1/img.png)
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
Web on Servlet Stack :: Spring Framework ** HandlerMapping : 클라이언트가 요청한 URL 경로에 따라 요청 정보를 분석하여 해당 경로와 맵핑되는 Controller가 있는지 조회하는 역할 ** HandlerAdaptor : 맵핑된 Controller에게 해당 클라이언트가 요청한 정보를 처리하도록 전달해주는 역할. ** ViewResolver : 클라이언트의 요청을 처리한 Controller가 응답 결과로 view를 반환하면 > 반환된 view 에 해당하는 파일(페이지)을 찾아 client에게 전달(렌더링) web.xml 설정! 모든 URL을 DispatcherServlet에서 받아라~하는 설정 appServlet org.springframework.web.s..
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
** 전과 같이 MyRoom (main) + Tape + TapeReader 클래스 활용. - MyRoom main --> component-scan 컨테이너 구성 - Tape --> @Component로 bean으로 등록 / @Value 애너테이션을 생성자로 이동 - TapeReader --> @ Component 활용 bean 등록 / setter 메소드 삭제 1. Component scan 태그 1) component-scan-config.xml 파일 생성 이전과 동일... 해당 링크에서 xml 엘리먼트 가지고오기 Annotation 기반 설정 구성을 하기 위한 엘리먼트를 추가해야 함 : xmlns:context attribute를 추가했기 때문에 애너테이션 작성이 가능함. (xmlns:contex..
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
** 전과 같이 MyRoom (main) + Tape + TapeReader 클래스 활용. - MyRoom main --> Annotation기반 컨테이너 구성 - Tape --> @Value 애너테이션 - TapeReader --> @Autowired 애너테이션 사용 1. Field 기반 주입 1) annotation-config-field.xml 파일 생성 해당 링크에서 xml 엘리먼트 가지고오기 Annotation 기반 설정 구성을 하기 위한 엘리먼트를 추가해야 함 : xmlns:context attribute를 추가했기 때문에 애너테이션 작성이 가능함. (xmlns:context="http://www.springframework.org/schema/context") 그 외에도 @Autowired,..