장생농 (140) 썸네일형 리스트형 엉터리 정리 - java.util.Optional<T> Optional 클래스는 T 타입의 객체를 포장하는 Wrapper class다. 모든 타입의 객체가 들어갈 수 있다. Optional 객체를 사용하면 NullPointerException 예외 피할 수 있다. 널 값으로 인해 발생하는 예외를 처리할 수 있게 된다. 스프링부트에서 JPA를 사용할 때, JpaRepository를 통해 데이터를 받아올 때 null 값인 경우를 대비해 Optional 타입으로 값을 받아온다. Optional item = itemRepository.findById(id); Optional 메소드 static Optional empty() 아무런 값도 가지지 않는 비어있는 Optional 객체를 반환함. T get() Optional 객체에 저장된 값을 반환함. boolean is.. JPA 연관관계 설정하기 데이터끼리는 관계를 갖는다. 그래서 DB 테이블끼리 관계를 설정하기 위해 ForeignKey를 사용한다. 예를 들어 작성자 테이블과 게시글 테이블이 있다면 작성자는 여러 게시글을 작성할 수 있기 때문에 게시글은 작성자 FK를 갖고 있도록 설계해야 한다. JPA는 이런 연관관계를 Entity에 어노테이션을 붙여 설정할 수 있다. 전자가 자신이고 후자가 상대다. @OneToOne - 일대일 @OneToMany - 일대다 @ManyToOne - 다대일 @ManyToMany - 다대다 JPA를 통해 데이터들을 처리하려면 먼저 DB Table과 Java Entity를 만들어야 한다. 2021.03.24 - [study/Spring boot] - JPA와 Entity 기본 2021.03.25 - [study/Spr.. JPA와 Repository(간단히 CRUD) JPA : JAVA Persistence API. ORM(Object Relational Mapping)으로 RDB의 정보를 객체지향으로 활용할 수 있도록 도와주는 도구. JSP의 DAO(Data Access Object)와 같다. JPA는 Object와 RDB를 매핑시켜 데이터를 쉽게 다루는 기술을 제공한다. 쿼리보다 객체를 더 다루기 때문에 프로그래밍에 더 집중할 수 있게 해주는 라이브러리다. JPA는 JpaRepository 인터페이스를 제공한다. Entity에 대해서 기본적인 CRUD를 사용할 수 있게 해준다. 간단히 만들 수 있다. repository 인터페이스를 만들고 JpaRepository 인터페이스를 상속받는다. T는 저장할 객체의 타입이고, U는 PK의 타입이다. 따로 구현해야 하는 코.. JPA와 Entity 기본 JPA : JAVA Persistence API. ORM(Object Relational Mapping)으로 RDB의 정보를 객체지향으로 활용할 수 있도록 도와주는 도구 JPA는 Object와 RDB를 매핑시켜 데이터를 쉽게 다루는 기술을 제공한다. 쿼리보다 객체를 더 다루기 때문에 프로그래밍에 더 집중할 수 있게 해주는 라이브러리다. JPA를 사용하기 위해 먼저 표기법을 알아야 한다. Camel Case : 첫문자는 소문자, 띄어쓰기 대신 대문자로 표기 - 자바의 변수를 선언할 때 사용 - userId Snake Case : 모두 소문자로 표기, 띄어쓰기는 언더바로 - DB칼럼에 사용 - user_id 표기법을 지켜야 JPA가 매핑시킬 수 있다. Entity : DB의 테이블과 대응되는 JPA의 클래스.. 컨트롤러가 post 요청을 받을 때(+put/patch, delete + REST) HTTP 통신에서는 사용자에게 요청을 받는 주소가 있어야 하는데 주소마다 받는 메소드들을 모아 놓은 것이 컨트롤러다. 컨트롤러에서 post 요청을 받는 메소드를 만들려면 선언부 위에 * @ReqeustMapping을 사용해서 method를 post으로 설정한다 * @PostMapping을 붙인다. @RequestMapping(method = RequestMethod.POST, path = "/post") // 또는 @PostMapping("/post") * 컨트롤러의 메소드끼리 같은 주소를 매핑한다면 에러가 생긴다. 하지만 컨트롤러(클래스)끼리 주소가 겹치는 건 괜찮다. post 요청에 경우 HTTP 패킷의 Body 데이터를 담아 보낸다. mime 타입을 정해서 받을 수 있고, 기본값은 "applicat.. 엉터리 정리 - @RestController와 @Controller @Controller @Controller 어노테이션이 붙은 컨트롤러는 주로 파일, 뷰, 데이터를 리턴한다. 컨트롤러가 클라이언트의 요청을 받으면 해당하는 메소드가 파일의 경로를 리턴한다. @RestController @RestController 어노테이션이 붙은 컨트롤러는 요청에 해당하는 메소드가 클라이언트에게 그대로 리턴한다. 참고자료 : mangkyu.tistory.com/49 @Entity로 테이블 만들기 먼저 DB의 테이블로 만들 ORM 클래스를 만든다. 클래스에 선언부에 @Entity를 붙인다. 그러면 해당 클래스가 MySQL에 테이블로 생성된다. ORM. 필드마다 다양한 어노테이션을 붙여 속성을 부여한다. @Id -> PrimaryKey가 된다. @GeneratedValue(strategy=GenerationType.IDENTITY) -> 프로젝트와 연결된 DB의 넘버링 전략을(IDENTITY) 따라간다. MySQL의 경우 auto_increment를 사용한다. @Column(nullable = false, length = 10) -> null을 허용하지 않고, 길이는 10으로 제한한다. @CreationTimestamp -> 시간을 자동으로 입력한다. @ColumnDefault("'seoul'") .. 스프링 부트의 전반적인 설정을 하는 파일 application.yml 스프링부트에서는 src/main/resources/application.yml 파일에 설정들을 기술한다 기존의 web.xml + root-context.xml + servlet-context.xml을 대체한다. 서버가 시작될 때 먼저 application.yml을 읽고 시작된다. application.yml은 라이브러리에 대한 설정도 할 수 있고 서버에 대한 설정도 할 수 있다. 예를 들어 서버의 포트를 설정하거나, context-path도 설정할 수 있다. jpa의 hibernate에서 엔티티의 변수명을 그대로 설정하기 위해서 다음과 같은 설정을 할 수 있다. naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrateg.. 이전 1 ··· 6 7 8 9 10 11 12 ··· 18 다음