분류 전체보기

@Entity JPA에서 엔티티란 쉽게 생각하면, DB 테이블에 대응하는 하나의 클래스라고 생각할 수 있습니다. @Entity가 붙은 클래스는 JPA가 관리해주며, JPA를 사용해서 DB 테이블과 매핑할 클래스는 @Entity를 꼭 붙여야만 매핑이 가능합니다. @Entity를 사용할 때는 몇가지 주의사항이 있습니다. 주의사항 접근 제어자가 public 혹은 protected 인 기본 생성자가 필수입니다. 구현체에 따라 되는 것도 있으나, 스펙상 사용하지 못하도록 해두었기 때문에 사용하지 않는 것이 좋습니다. final 클래스, enum, interface, inner 클래스에는 사용이 불가능합니다 저장하려는 속성은 final이면 안됩니다. 구현체에 따라 되는 것도 있으나, 스펙상 사용하지 못하도록 해두었..
플러시 영속성 컨텍스트(Persistence Context)와 데이터베이스를 동기화하는 것을 의미합니다. 보통 데이터베이스 트랜잭션이 커밋되는 순간에 플러시가 발생합니다. 플러시가 발생하면 "쓰기 지연 저장소"에 모아뒀던 INSERT, UPDATE, DELETE SQL등이 데이터베이스에 전달됩니다. 즉 플러시가 발생하면 영속성 컨텍스트의 변경사항을 DB에 반영함으로써 DB와 영속성 컨텍스트를 동기화시키는 것입니다. 플러시가 발생하면 플러시가 발생하면 다음과 같은 일이 차례대로 수행됩니다 변경 감지(Dirty Checking) 수정된 엔티티가 있다면 쓰기 지연 SQL 저장소에 등록 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송(등록, 수정, 삭제) 플러시하는 방법 em.flush() - 직접 호출 ..
엔티티의 생명주기 엔티티는 다음과 같이 4단계의 생명 주기가 있습니다. 비영속 (new/transient) 영속 (managed) 준영속 (detached) 삭제 (removed) 비영속(new/transient) 비영속 상태는 객체를 새로 생성한 상태입니다. JPA와 전혀 관계없이 객체만 생성한 상태입니다. Member member = new Member(1L, "신동훈"); //member는 비영속 상태 영속 상태가 아니므로 당연히 영속성 컨텍스트에 의해 관리되지 않으며, 1차 캐시, 변경감지등의 기능이 적용되지 않습니다. 영속(managed) 영속성 컨텍스트에 의해서 관리되어지는 상태입니다. 생성한 객체를 em.persist()를 통해 영속성 컨텍스트에 저장하거나, 혹은 em.find()를 통해 D..
🧐 엔티티 매니저 팩토리 & 엔티티 매니저 영속성 컨텍스트에 대해 알아보기 전에 엔티티 매니저 팩토리와 엔티티 매니저에 대해서 알아보겠습니다. 엔티티 매니저 팩토리는 생성되는 시점에 DB 커넥션 풀을 생성해 둔 후, 고객의 요청이 들어올 때마다 엔티티 매니저를 생성합니다. 엔티티 매니저는 DB 연결이 필요한 시점(보통 트랜잭션이 시작되는 경우)에 커넥션 풀에 있는 connection을 얻습니다. 🧐 엔티티 매니저 팩토리가 엔티티 매니저를 사용하는 이유 엔티티 매니저 팩토리는 생성되는 시점에 DB 커넥션 풀을 생성하기에 생성 비용이 매우 큽니다. 그러나 엔티티 매니저의 생성 비용은 거의 들지 않으므로, 엔티티 매니저 팩토리는 필요에 따라 앤티티 매니저를 생성하여 사용합니다. 엔티티 매니저 팩토리는 스레드 ..
Datebase Setiing h2 데이터베이스를 예시로 사용하겠습니다. spring: datasource: driver-class-name: org.h2.Driver url: username: password: 방언 설정 h2 데이터베이스를 예시로 사용하겠습니다. spring: jpa: database-platform: org.hibernate.dialect.H2Dialect SQL 보기 spring: jpa: show-sql: true SQL 로그로 보기 logging.level: org.hiberante.SQL: debug org.hibernate.orm.jdbc.bind: TRACE SQL 가독성 좋게 만들기 spring: jpa: properties: hibernate: format_sql: t..
H2 Datebase를 생성하자. ( ./[원하는 이름] ) 다음과 같이 jdbc:h2:./[설정한 이름] 으로 나올 것이다. 이를 실행시키면 jpa.mv.db 파일이 생성된다. 이제 로컬에서 접속해보자. jdbc:h2:tcp://localhost/~/[설정한 이름]으로 들어가주자. 혹시 이런 오류가 떴다면 H2의 bin 폴더에 있는 [설정한 이름].mv.db 파일을 오류 메세지에 나와있는 곳으로 이동시켜주자.
🧐 JSON으로 로그인처리 하기 스프링 시큐리티의 formLogin()을 사용하면 오로지 Content-Type이 x-www-form-urlencoded인 방식으로만 데이터를 받을 수 있습니다. formLogin을 사용하지 않고, JSON으로 username과 password를 받아서 로그인 처리를 진행하는 방법을 알아보도록 하겠습니다. 🧐 formLogin()의 작동방식 시큐리티의 formLogin()을 활성화 시키면 다음 사진과 같이 FormLoginConfigurer가 활성화 되는것을 알 수 있습니다. 이때 FormLoginConfigurer 에서는 UsernamePasswordAuthenticationFilter란 것을 사용하는데 이에 대한 작동방식을 확인해 보도록 하겠습니다. 🧐 Username..
Login이 성공했을 때 후처리 하는 방법 Spring Security를 사용한다면 로그인을 손쉽게 구현할 수 있다. 그러나 로그인 이후, 토큰을 발급한다던가 하는 추가적인 상황이 필요한 경우 어떻게 해결할 수 있는지 알아보겠다. AuthenticationSuccessHandler 구현 후처리 방법은 매우 간단한데, Spring Security에 존재하는 AuthenticationSuccessHandler 인터페이스를 구현하기만 하면 된다. AuthenticationSuccessHandler 은 총 2개의 메소드로 이루어져 있고 그 중 하나는 default 메소드이다. 이 인터페이스를 구현하는 Handler 클래스를 새롭게 작성하자. @Slf4j @Component public class CustomLo..
말 랑
'분류 전체보기' 카테고리의 글 목록 (168 Page)