분류 전체보기

· JPA
양방향 연관관와 연관관계의 주인 양방향 매핑을 보면 테이블을 단방향 매핑과 사진이 동일한데 객체는 Team에 members 라는 리스트가 추가 되었다. 테이블은 외래키 하나로 Member테이블에서 TEAM_ID와 Team테이블의 TEAM_ID를 조인해서 Member테이블에서든 Team테이블에서든 서로의 테이블을 조회할 수 있는데 객체는 Team 객체에 필드를 추가해 줘야한다. 객체의 양방향 관계는 사살 양방향 관계가 아니라 서로 다른 단방향 관계 2개다. Member 객체에 Team필드 Team 객체에 List members 필드 객체 연관관계를 단방향에서 양방향으로 바꿔보자 @Entity public class Team( @Id @GeneratedValue private Long id; private ..
· JPA
예제 시나리오 연관관계 매핑을 하기 위해 다음의 예제를 가지고 진행 회원과 팀이 테이블이 있고, 회원은 하나의 팀에만 소속 될 수 있다. 회원과 팀을 다대일 관계이다 (N:1) 회원 테이블에 팀 pk를 넣는다. 객체를 테이블에 맞추어 모델링 위 사진처럼 연관관계 없는 객체 @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; ... } @Entity public class Team( @Id @GeneratedValue private Long id; private Strin..
· JPA
객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 다음은 주의할 점이다 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스 사용X 저장할 필드에 final 사용 X @Entity 속성 속성: name JPA에서 사용할 엔티티 이름을 지정한다. 기본값: 클래스 이름을 그대로 사용(예: Member) 같은 클래스 이름이 없으면 가급적 기본값을 사용한다. @Table @Table은 엔티티와 매핑할 테이블 지정 속성 기능 기본값 이름 매핑한 테이블 이름 엔티티 이름을 사용 목록 데이터베이스 catalog 매핑 ..
· JPA
엔티티 매니저 팩토리와 엔티티 매니저 JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기 영속성 컨텍스트 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어이다. "인티티를 영구 저장하는 환경"이라는 뜻을 지님. jpa내부 동작을 알기 위해서는 영속성 컨텍스트 이해가 필요하다 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { //entityManager.close() 전에 code 작성 Member member =..
· 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 는 리소스를 보관하는 곳이고, 또 클래스패스의 시작 경로이다. 따라서 다음 디렉토리에 리소스를 넣어두면 스프링 부트가 정적 리소스로 서비스..
hapBday
'분류 전체보기' 카테고리의 글 목록 (17 Page)