본문 바로가기
728x90
반응형

JPA7

@ElementCollection 컬랙션 객체임을 JPA 에 알려주는 Annotation. @Entity public class Person { @Id private Long id; private String email; @ElementCollection @CollectionTable( name = "address", joinColumns = @JoinColumn(name = "person_id") ) List addressInfoList = new ArrayList(); } Entity 와 라이프 싸이클을 같이 하며 독립적으로 사용 불가능 하다. 부모 Entity가 삭제될 경우 같이 삭제된다. (실제 클래스에 cascade 를 설정하는 옵션이 없다.) ElementCollection의 Fetch 전략은 기본이 Lazy 이다. 실제 테이.. 2022. 6. 13.
@Access 어노테이션 JPA 가 엔티티 데이터에 접근하는 방식을 지정한다. 1. AccessType.FIELD : 필드에 직접 접근한다. @Access(AccessType.FIELD) private String address1; 2. AccessType.PROPERTY : 프로퍼트로 접근한다. @Access(AccessType.PROPERTY) public String getAddress2() { return address1 + address2; } 3. AccessType 이 지정되지 않은 경우는 @Id 위치에 따라 지정된다. @Entity public class OrderInfo { @Id private Long id; private String address1; @Transient private String addres.. 2022. 6. 3.
Spring Boot Data Jpa 를 사용한 Paging. Spring Data Jpa 를 사용하게 되면서 전에 쓰지 않았던 paging 기능에 대해서 이야기 해보려 한다. Domain 을 조회하는 Repository interface를 만들때에 JpaRepository 를 상속해서 사용하는 경우가 많다. 이 JpaRepository 를 살펴보면 내부에 이렇게 구현이 되어있다. public interface JpaRepository extends PagingAndSortingRepository, QueryByExampleExecutor { ..... } 그리고 다시 PagingAndSortingRepository 를 살펴보면 다음과 같다. public interface PagingAndSortingRepository extends CrudRepository { .. 2019. 11. 11.
[Spring Security]간단 Spring Security Spring Security 를 적용하는 내용을 처음부터 차근차근 정리를 해보려고 한다. 목표는 Spring Security 를 공부하면서 각각의 기능들을 적용해보는것이다. 진행하다보면 Spring Security 뿐만 아니라 다른 내용들도 점점 추가될것 같다. 다 만들고 나서는 git에 소스를 공유할 생각이다. ^^;; 언제가 될지는 잘 모르겠다. 환경 : java 1.8, Spring Boot 1.5.3 Release, Maria DB, JPA, gradle build.gradle12345678910111213141516171819202122232425262728293031323334buildscript { ext { springBootVersion = '1.5.3.RELEASE' } reposito.. 2017. 6. 27.
IntelliJ 에서 queryDSL 의 Q 도메인을 찾지 못할때 아직 사용이 익숙하지 않은 IntelliJ 에서 작업을 하다가 JPA의 Entity로 되어 있는 도메인들을 못찾는 현상이 발생했다. src/main/generated 라는 폴더 안에 Qdomain 들이 실제 존재하고 있는 상황인데 build 를 돌리면 찾지 못했다. 에러 내용은 위와 같이 cannot find symbol, class QCode. 저 캡쳐는 한 부분만 캡쳐를 했지만 실제로는 모든 Qdomain을 찾지 못한다고 에러가 났다. 그래서 구글링을 해보니 generated 폴더를 패스에 추가를 해줘야 한다는 것을 알았다. IntelliJ 에서 File>Project Structure>Modules 에 들어가면 아래와 같이 화면이 구성되어있다. 위에 화면에서는 이미 Source Folder 에 sr.. 2017. 5. 17.
[JPA]Persistence Context Persistence Context 특징- 1차 캐시- 동일성 보장- 트랜잭션을 지원하는 쓰기 지연 (transaction write-behind)- 변경감지(dirty checking)- 지연로딩 조회- 조회시에 1차캐시에서 식별자 값으로 entity 조회. 없으면 DB에서 조회 등록- persist 를 실행하면 1차 캐시에 저장 되고 transaction writer-behind에 쿼리를 저장해둔다.- commit 시점에 transaction writer-behind에 있는 쿼리를 실행함. 수정 - 1차 캐시에 Entity가 저장될 시점에 최초상태의 스냅샷을 같이 저장한다. - transaction writer-behind 에서 flush 시점에 스냅샷과 entity를 비교해서 변경된 entity를 .. 2015. 8. 25.
[JPA]Entity 생명주기 1. new/transient : persistence context와 무관2. managed : persistence context에 저장된 상태3. detached : persistence context에 저장되었다가 분리된 상태4. removed : 삭제된 상태 2015. 8. 12.
728x90
반응형