분류 전체보기

· JPA
플러시 엔티티 수정 변경 감지에서 flush 호출 돼서 엔티티와 스냅샷을 비교한다고 했음 플러시: 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영 플러시 발생 변경 감지 → 수정된 엔티티 쓰기 지연 SQL 저장소에 등록 → 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리) 데이터베이스가 커밋되면 플러시가 자동으로 일어난다. 영속성 컨텍스트 플러시 하는 방법 em.flush() - 직접 호출 트랜잭션 커밋 - 플러시 자동 호출 JPQL 쿼리 실행 - 플러시 자동 호출 코드 실행 결과는 보면 ==============이 선을 기준으로 이전에 쿼리문이 날라갔다. 이 말은 즉슨 em.flush한 시점에서 쿼리가 db에 날라갔음을 보여준다. (commit이전에 flush에서 쿼리..
· JPA
객체와 테이블 생성하고 매핑 @Entity JPA가 관리할 객체 jpa가 시작될 때 이 객체를 사용할 것이라고 인식 @Id 데이터베이스 PK와 매핑 PK가 뭔지 알려주기 위해 적어주는 것 @Table 엔티티의 테이블명 수동으로 지정 (@Table(name="NAME")) @Colum 쿼리문 나갈 때 칼럼 이름 지 JPA 사용 시 알아야 되는 것 엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에서 공유한다. 엔티티 매니저 팩토리는 애플리케이션 로딩 시점에 한개만 들어여야 한다. 엔티티 매니저는 쓰레드간에 공유하지 않는다. 트랜잭션마다 엔티티 매니저를 만들어줘야한다. JPA의 모든 데이터 변경은 트랜잭션 안에서 실행해야 한다 jpa에서 모든 데이터를 변경하는 모든 작업은 트랜잭션 안에서 작업해야 한..
· JPA
JPA 구동 방식 Persistence라는 클래스에서 시작한다. 여기서 설정정보 (META-INF/persistence.xml)를 읽어서 EntityManagerFactory라는 클래스를 생성한다. EntityManagerFactory는 EntityManager를 생성해서 동작한다. persistence-unit 의 이름은 hello 라고 설정했으므로 EntitymanagerFactory생성할 때 persistenceUnitName을 hello라고 해준다 H2 데이터베이스 JDBC url 설정
HTTP API를 제공하는 경우 데이터를 전달해야 하므로, http 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. https://mystudylog.tistory.com/40 HTTP 요청 메시지 - 텍스트, JSON HTTP message body 데이터 조회 - text 요청 파라미터와 다르게, HTTP 메시지 바디를 통해 데이터가 직접 넘어오는 경우는 @RequestParam , @ModelAttribute 를 사용할 수 없다 1. InputStream HTTP 메시지 바디의 데이 mystudylog.tistory.com 위 링크에서는 요청과 응답이 모두 정리되어 있으므로 여기서는 응답 부분만 정리하겠다. @GetMapping("/response-body-string-v1") publ..
서버에서 응답 데이터를 만드는 방법은 크게 3가지이다 정적 리소스: 정적인 HTML, css, js를 제공해서 응답하는 것 뷰 템플릿: 동적인 HTML을 제공할 때는 뷰 템플릿을 사용 HTTP 메시지 사용: HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. 정적 리소스로 응답 스프링 부트는 클래스패스의 다음 디렉토리에 있는 정적 리소스를 제공한다. /static, /public, /resources, /META-INF/resources src/main/resources 는 리소스를 보관하는 곳이고, 또 클래스패스의 시작 경로이다. 따라서 다음 디렉토리에 리소스를 넣어두면 스프링 부트가 정적 리소스로 서비스..
API 예시 회원 관리를 HTTP API로 만든다 생각하고 매핑을 어떻게 하는지 알아보자. 회원 관리 API 회원 목록 조회: GET → /users 회원 등록: POST → /users 회원 조회: GET → /users/{userId} 회원 수정: PATCH → /users/{userId} 회원 삭제: DELETE → /users/{userId} @RestController @RequestMapping("/mapping/users") public class MappingClassController { @GetMapping public String user() { return "get users"; } @PostMapping public String addUser() { return "post user..
HTTP message body 데이터 조회 - text 요청 파라미터와 다르게, HTTP 메시지 바디를 통해 데이터가 직접 넘어오는 경우는 @RequestParam , @ModelAttribute 를 사용할 수 없다 1. InputStream HTTP 메시지 바디의 데이터를 InputStream 을 사용해서 직접 읽을 수 있다. @PostMapping("/request-body-string-v1") public void requestBodyString(HttpServletRequest request, HttpServletResponse response) throws IOException { ServletInputStream inputStream = request.getInputStream(); Stri..
쿼리 파라미터, HTML From 1. request.getParameter() HttpServletRequest 의 request.getParameter() 를 사용하면 다음 두가지 요청 파라미터를 조회할 수 있다. GET, 쿼리 파라미터 전송 POST, HTML Form 전송 @RequestMapping("/request-param-v1") public void requestParamV1(HttpServletRequest request, HttpServletResponse response) throws IOException { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParamete..
요청 매핑 요청이 왔을 때 컨트롤러와 매핑해 주는 것 @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); /** * 기본 요청 * 둘다 허용 /hello-basic, /hello-basic/ * HTTP 메서드 모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE */ @RequestMapping("/hello-basic") public String helloBasic() { return "ok"; } } @RestController @RestController 는 반환 값으로 뷰를 찾는 것이 아니라, HTTP 메시지 바디에 바로 입력한다. @R..
hapBday
'분류 전체보기' 카테고리의 글 목록 (18 Page)