Spring 입문
- JPA가 Entity 클래스를 인스턴스화(객체화) 할 때 기본 생성자 사용
- @Table : 데이터베이스에서 맵핑할 table의 이름 지정
default : Entity 명이 됨
- @Colume : 데이터베이스의 Column과 필드(private ~)를 맵핑하는 의미
default : 객체의 Entity 클래스의 필드명
- nullable : 데이터의 null값 허용 여부 지정
ex) nullabe : false → null 허용 안함
- unique : 데이터 중복값 허용 여부 지정
ex) unique : true → 데이터 중복 허용 안함(유니크한 값만 받겠다), false가 중복 허용
- length : 길이를 줄 수 있는 옵션 (데이터 값, 문자 길이 제약)
default : 255
- @ID : 필드의 기본 key를 저장(Entity에서 굉장히 중요!) Primary key
- Java 환경에서 JAP를 사용하려면 persistence.xml에 설정 해야 함
- @GeneratedValue(strategy = GenerationType.IDENTITY) : auto_increment 추가
- 영속성 컨텍스트, JPA는 트랜잭션의 개념을 가져와서 반영 = 효율적으로 관리
- EntityManager 내부에 EntityTransaction이라는 것을 가져올 수 있음
- 트랜잭션에 rollback method를 호출하면 위에서 한 작업이 취소됨
- finally : 무조건 실행됨
- 콘솔에서 한글이 깨지는 현상
- 인코딩 문제 해결
- idea64.exe.vmoptions에 추가
- Dfile.encoding=UTF-8
- Dconsole.encoding=UTF-8
- 경로에 한글 삭제 → camp
- 콘솔에서 sql을 따로 작성안해도 스프링에서 jpa로 대신 작성할 수 있다
- flush : 영속성컨텍스트에서 변경사항을 db에 적용하는 메서드
flush를 통해서 db와 동기화를 해줄 수 있음
- clear : 영속성컨텍스트와 분리가 되고 추적이 안되기때문에 db랑 동기화 불가
- EntityTransactoin et = em.getTransaction();
→ 트랜젝션 걸어주기
- 영속성 컨텍스트가 가지고 있는 기능 첫 번째
- 1차 캐시 기능 Map 자료 구조, 효율적으로 관리
- 쓰기 지원 저장소, 데이터베이스의 트랜잭션 처럼 Query를 담고 있다가 트랜잭션 commit 하면서 한 번에 반영
- Dirty Checking 변경 감지, 최초 상태를 저장 했다가 현재 상태와 비교해서 변경 내용이 있다면 UpdateQuery를 발생
→ 트랜잭션 commit 호출이 되고 난 다음에 flush method 호출이 되면서 비교
입문 강의 빨리 다 보고 숙련 강의 들어가기!