전체 글
-
Spring data JPA카테고리 없음 2023. 4. 21. 15:26
JPA에 대해서 많은 포스팅은 한듯하다. 하지만 계속 계속 봐야겠다. 할때마다 까먹는다. 오늘은 Spring data jpa를 포스팅해보자. Spring data JPA Spring data jpa는 스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도로고 제공해주는 프로젝트이다. 이 프로젝트는 데이터 접근 계층을 개발할 때 지루하게 반복되는 CRUD 문제를 조금더 세련된 방법으로 해결한다. public class AccountRepository { public void save(Account account){ ... } public Member findOne(Long id){ ... } //update //delete //findAll } public class ItemRepository { publ..
-
영속성 전이 CASCADE카테고리 없음 2023. 4. 21. 15:26
저번에 잠깐 알아보긴 했는데 오늘 포스팅하는김에 한개 더 남기자 영속성 전이 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶다면 영속성 전이 기능을 사용하면 된다. JPA의 CASCADE옵션으로 영속성 전이를 제공한다. 쉽게 말해서 영속성 전이를 사용하면 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장할 수 있다. @Entity @Data public class Parent { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "parent") private List children = new ArrayList(); } @Entity @Data public class Child { @Id @GeneratedValue..
-
JPA 영속성카테고리 없음 2023. 4. 21. 15:26
오늘 알아볼 것은 JPA의 기초인 영속성을 알아보자. 맨날 매핑, 조인등등 알아봤지만 JPA에서 가장 중요한 영속성을 포스팅은 안한듯하다. 영속성 컨텍스트 영속성 컨텍스트란 엔티티를 영구 저장하는 환경? 이라고 해석 할 수 있다. 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. entityManager.persist(member) 이 코드는 단순히 회원 엔티티를 저장하는데 정확히 이야기 하면 persist() 메서드는 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다. 엔티티의 생명주기 비영속성(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태 영속(managed) : 영속성 컨텍스트에 저장된 상태 준영속(d..
-
JPA 부가 기능카테고리 없음 2023. 4. 21. 15:26
@OrderBy @OrderColumn이 데이터베이스에 순서용 컬럼을 매핑해서 관리했다면 @OrderBy는 데이터베이스의 Order by절을 사용해서 컬렉션을 정렬한다. 따라서 순서용 컬럼을 매핑하지 않아도 된다. 그리고 @OrderBy는 모든 컬렉션에 사용할 수 있다. @OneToMany(mappedBy = "team") @OrderBy("username desc, id asc") private Set members = new HashSet(); 위는 Team.members를 보면 @OrderBy를 적용했다. 그리고 값으로는 username desc, id asc를 사용해서 username필드로 내림차순 id로는 오름차순 정렬을 하였다. @OrderBy의 값은 JPQL의 order by절처럼 엔티티의 ..
-
JPA 컬렉션카테고리 없음 2023. 4. 21. 15:26
JPA 와 컬렉션에 대해서 알아보자 JPA는 자바에서 기본으로 제공하는 Collection, List, Set, Map 컬렉션을 지원하고 다음 경우에 이 컬렉션을 사용할 수 있다. 1. @OneToMany, @ManyToMany 를 사용해서 일대다나 다대다 엔티티를 매핑할 때 2. @ElementCollection을 사용해서 값 타입을 하나 이상 보관할 때 자바의 컬렉션 인터페이스의 특징은 다음과 같다. - Collection : 자바가 제공하는 최상위 컬렉션이다. 하이버네이트는 중복을 허용하고 순서를 보장하지 않는다고 가정한다. - Set : 중복을 허용하지 않는 컬렉션이다. 순서를 보장하지 않는다. - List : 순서가 있는 컬렉션이다. 순서를 보장하고 중복을 허용한다. - Map : Key, Va..
-
[DDD] 엔티티와 벨류카테고리 없음 2023. 4. 21. 15:26
오랜만에 DDD 글을 쓴다. 원래 이번달까지 다 읽기로 했는데..ㅠㅠ 이제 첫장 다 읽어서..나원 엔티티와 벨류 도출한 모델은 크게 엔티티와 벨류로 구분할 수 있다. 앞서 만든 모델에도 엔티티와 벨류가 존재 한다. 엔티티 엔티티의 가장 큰 특징은 식별자를 갖는다는 점이다. 식별자는 엔티티 객체마다 고유해서 각 엔티티는 서로 다른 식별자를 갖는다. 예를 들어, 주문 도메인에서 각 주문은 주문번호를 갖는데 이 주문번호는 각 주문마다 서로 다르다. 따라서 주문번호는 식별자가 된다. 주문에서 배송지 주소가 바뀌거나 상태가 바뀌더라도 주문번호가 바뀌지 않는 것처럼 엔티티의 식별자는 바뀌지 않는다. 엔티티를 생성하고 엔티티의 속성을 바꾸고 엔티티를 삭제할 때까지 식별자는 유지된다. 엔티티의 식별자는 바뀌지 않고 고..
-
JPA 트랜잭션과 락카테고리 없음 2023. 4. 21. 15:26
트랜잭션은 원자성, 일관성, 격리성, 지속성을 보장해야 한다. 원자성 : 트랜잭션내에서는 실행한 작업들은 마치 하나의 작업인 것 처럼 모두 성공하든가 모두 실패해야 한다. 일관성 : 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다. 격리성 : 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리한다. 예를들어 동시에 같은 데이터를 수정하지 못하도록해야 한다. 격리성과 관련된 성능 이슈로 인해 격리 수준을 선택할 수 있다. 지속성 : 트랜잭션을 성공적으로 끝내면 그 결과가 항상 기록되어야 한다. 중간에 시스템에 문제가 발생해도 데이터베이스 로그 등을 사용해서 성공한 트랜잭션 내용을 복구해야 한다. 트랜잭션은 ..
-
spring security oauth2 jwt카테고리 없음 2023. 4. 21. 15:26
spring security oauth2 jwt 설정하는 법에 대해 알아보자. jwt란 JSON Web Token의 약자로 일반 oauth2 토큰을 기반으로 하는 것과 비슷하다. 인터넷에 잘 나와 있으니 참고하길 바란다. 일단 spring boot기반으로 작성할 예정이다. org.springframework.security.oauth spring-security-oauth2 org.springframework.boot spring-boot-starter-security org.springframework.security spring-security-jwt org.springframework.boot spring-boot-starter-web org.projectlombok lombok 아주 기본적인것만 ..