분류 전체보기 (1002) 썸네일형 리스트형 [JPA기본] 2. 프로젝트 생성, JPA 기본 CRUD 및 트랜잭션 1. 프로젝트 생성 데이터베이스 생성 H2 데이터베이스로 실습한다. 홈페이지에서 다운로드 후, console을 실행하여 아래 사진과 같이 Embedded용 Generic H2를 만든다. 이렇게 만들면 데이터 베이스를 생성하게 된 것이 된다. 이렇게 하면 "C:\Users(사용자)\사용자 계정 이름\" 위치에 JDBC URL의 맨 마지막 글자인 test.mv Data Base File이 생성된 것을 확인할 수 있다. 주의사항 자바가 설치되어 있어야 한다!! H2는 자바를 기반으로한 jar 형태의 executable file을 제공하기 때문에 컴퓨터에 자바가 설치되어 있지 않다면 실행이 불가하다. 이후 이 Data Base File을 기반으로 Generic H2 Server 방식으로 통신을 통해 접근할 수 .. [JPA기본] 1. JPA 필요성 : 객체와 RDB의 패러다임 불일치 1. JPA란 JPA는 SQL(Structured Query Language) 중심적인 개발을 대체해주는 ORM(Object Relational mapping) 이다. 객체 지향적인 개발 스타일을 유지하면서 데이터 베이스와의 상호작용이 가능하도록 해준다. 객체와 데이터베이스의 관계를 매핑 해주는 것이 ORM이다. 객체 지향적 언어인 자바와 관계형 데이터 베이스(RDB, Relational DataBase)간에는 다음 섹션에서 다룰 패러다임 불일치의 문제가 있는데, 여기서 발생하는 개발에서의 생산성 저하 문제를 해결해주는 도구라고 할 수 있다. 원래 SQL 중심적인 개발에서는 정보를 저장하는 테이블마다 반복적으로 CRUD에 해당하는 SQL 코드를 작성해야만 했다. 객체는 어떤 데이터의 속성과 기능을 갖고 .. [스프링 웹MVC-2] 21. 업로드, 다운로드 기능 구현 예제 여러 개의 파일을 한 번에 업로드 하는 방법, 업로드 파일을 브라우저 상에서 확인하도록 하는 방법, 다운로드 하는 방법에 대해서 학습해본다. 기존 파일에 도메인 코드를 추가하여 진행한다. 각 메서드나 방법론 보다는 전체적인 파일 전송 방식에 대한 이해가 중요하다. 1. 도메인 생성 Item 클래스의 필드값은 상품의 이름, 다운로드할 수 있는 상품 이미지, 조회했을 때 표시되는 이미지 리스트를 필드값으로 한다. 그리고 업로드된 파일의 이름을 저장할 수 있도록 UploadFile 클래스를 만든다. java/hello/upload/domain/Item.java 1 2 3 4 5 6 7 8 9 @Data public class Item { private Long id; private String itemName.. [스프링 웹MVC-2] 20. 파일 업로드 1. 파일 전송 시 HTTP 작동 방식 보통 파일 업로드를 위해서 HTML Form을 이용한다. 이때, 아래 그림과 같이 단순 text를 보낼때는 x-www-form-urlencoded로 보내지만, text와 binary 데이터를 같이 보내야 하는 경우처럼 여러 타입의 데이터를 함께 보내야 하는 경우, multipart/form-data로 넘어가고 boundary, filename 등 부가적인 정보가 붙어서 HTTP 요청이 생성된다. 뒤에서 다루겠지만, boundary로 나눠진 부분들을 parts로 표현하며, request.getParts()로 각 부분을 얻을 수 있다. 이런 기본적인 내용을 숙지하였으니, 파일 업로드를 실습해보자. 2. 서블릿의 multipart 요청 정보 처리 multipart 요청 .. [비공개] Weekly Report - 21/09/13~21/09/19, 448일차 보호되어 있는 글입니다. [스프링 웹MVC-2] 19. 타입 컨버터 - Formatter 1. 포맷터(Fomatter)란? 지난 글에서 학습한 Converter의 세부적인 개념이다. 특히나 금액, 날짜와 같은 자주 쓰는 타입에 대해 지역 정보(Locale)를 바탕으로 객체 문자 간 특화된 변환을 지원한다. 스프링에서 제공하는 Formatter를 살펴보면 Printer, Parser 객체를 상속받는 것을 볼 수 있다. 각각의 메서드 중 print 메서드는 객체를 문자로 변경하고, parse 메서드는 문자를 객체로 변경하는 역할을 한다. 2. Formatter 사용 직접 사용해보기 Formatter를 사용하는 기본적인 방법에 대해 알아본다. 테스트 코드로 위에서 다룬 print, parse 메서드를 연습한다. org.springframework의 Formatter를 상속받고, 타입은 Number.. [스프링 웹MVC-2] 18. 타입 컨버터 - ConversionService HTTP 요청을 통해 서버로 넘어온 정보 중, 서버에서 원하는 타입이 아닌 정보가 있을 수 있다. 각 필드들을 원하는 타입으로 변환하는 자바 코드를 사용해도 되지만, 스프링에서 제공하는 타입 컨버터 기능을 사용하면 자동으로 타입 변환이 되도록 할 수 있을 뿐만 아니라 사용자 지정 타입의 필드값으로 변경할 수 있는 등 여러 가지 장점이 있다. 1. 프로젝트 생성 아래 사진과 같이 생성하고, 늘 했던 방식과 같이 Build는 intelliJ가 하도록, Encoding은 UTF-8형식, Annotation Processor를 사용할 수 있도록 설정해준다. 2. Converter 인터페이스 스프링의 기본 타입 변환 지원 스프링은 기본적인 타입 변환은 자동으로 지원한다. 아래 예시를 보자. helloV1 컨트롤러.. [작성중][TIL][링크]Entity에 cascade=CascadeType.PERSIST 사용 시 주의 1:N의 관계를 갖는 A.class와 B.class가 있는 경우, @OneToMany(fetct=FetchType.LAZY, mappedBy = "...", casecade = CascadeType.PERSIST) private List Bs; CascadeType.PERSIST를 하면, A 타입만 JPA를 통해 영속성 객체로 불러오더라도, B 타입도 영속성 객체로 함께 불려오게 된다. 이것 때문에 엄청 오래 삽질을 했다... 정확한 원리는 아직 모르겠지만, 둘 다 영속성 객체로 걸려있으면 실제 SQL로 CRUD 시에 서로의 값을 참조하면서 무조건 넣어주어야 하는 것 같다. 링크 내용을 읽고 향후 JPA 개념이 생기면 정확하게 이해하자! 참조 [1] [jpa] CascadeType.PERSIST를 함부로.. 이전 1 ··· 80 81 82 83 84 85 86 ··· 126 다음