별도의 테이블을 통하여 Mapping 정보를 관리한다. table: some_mapping_table column: someMappingId | someEntityId | otherEntityId @Entity @Table(schema = "some", name = "some_entity") public class SomeEntity extends CreatedEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long someEntityId; private String name; @OneToMany(fetch = FetchType.EAGER) @JoinTable(name = "some_mapping_table", joinCo..
1. Embedded를 활용한 복합키 @Entity @Table(name = "some_entity") public class SomeEntity { @EmbeddedId private SomeId id; private String name; } @Embeddable public class SomeId { private Long someNumer; private Long someString; } 2. IdClass를 활용한 복합키 @Entity @IdClass(OtherId.class) @Table(name = "other_entity") public class OtherEntity { @Id private Long otherNumer; @Id private Long otherString; private..
1. 단방향 Mapping: JPA의 가장 기본적인 Entity Mapping @Entity @Table( name="someEntity") public class someEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long someEntityId; private String name; @OneToMany @JoinColumn(name = "someEntityId") private List sourceEntityList; } @Entity @Table(name="sourceEntity") public class SourceEntity { @Id @GeneratedValue(strategy=GenerationType.ID..
Table의 column을 Object로 Mapping할 때 사용한다. table: some_codes column: someCodeId | description | code1 | name1 | code2 | name2 | code3 | name3 @Entity @Table(name = "some_codes") public class SomeCode { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long someCodeId; private String description; @Embedded @AttributeOverrides({ @AttributeOverride(name = "code", column = @Column(name = "cod..

1 Table - 2 Entity 의 경우에 사용한다. 즉 같은 구조를 가지고 있지만, 서로 다른 Entity로 사용해야할 경우 유용하다. 실제 테이블의 구조를 가지고 있는 Child Root Entity에 @DiscriminatorColumn을 추가하여 구분값이 있는 Column을 지정한다. Child Entity는 Child Root Entity에 설정한 Column의 값 중 @DiscriminatorValue에 설정한 값으로 Grouping 된다. 주의점 : 각 엔티티로 Mapping 할 때는 서로 다른 column으로 Join해야 한다. 같은 column으로 Join하려면 아래와 같은 옵션을 추가한다. Parent Entity @OneToOne(mappedBy = "someEntity", casc..
1. Dependenciescompile "org.springframework:spring-orm:4.3.11.RELEASE"compile "org.springframework.data:spring-data-jpa:1.11.7.RELEASE"compile "org.hibernate:hibernate-core:5.2.11.Final"compile "org.hibernate:hibernate-entitymanager:5.2.11.Final"compile "com.querydsl:querydsl-jpa:4.1.3"2. Plugin settingMaven //QueryDSL com.mysema.maven apt-maven-plugin 1.1.3 process target/generated-sources/java..
QueryDSL 기본 - user define repository interface public interface MemberRepositoryCustom { Member search(String memberName); } - user define repository interface implement public class MemberRepositoryImpl implements MemberRepositoryCustom { @PersistenceContext(unitName = "jpaPractice") private EntityManager entityManager; public Member findOne(String memberName) { JPAQuery jpaQuery = new JPAQuery..
Criteria 기본 - Specification public Specification memberNameLike(String mamberName) { return (root, query, cb) -> cb.equal(root.get(Member_.memberName), memberName); } - Finder memberRepository.findAll(memberNameLike(memberName), pageable); 응용 public class QuerySupporter { public Specifications combineSpecifications(Specification... specifications) { return combineSpecifications(Lists.newArrayLis..
JPA를 사용할때 특정 entity를 동시에 수정하는것을 방지해야할 경우가 있다. 처음에는 쉬워 보이지만 이를 방지하기엔 뭔가 딱 떠오르는 좋은 수단이 애매하다. 이럴때 사용할 수 있는 기능이 Hibernate의 @Version이다. 이 기능은 처음 객체를 조회시 Hibernate가 DB의 version field에 값을 수정하고, 값을 반환한다.그리고 사용자가 entity를 수정후 저장할때 Hibernate는 DB의 version값과 entity가 가지고 있는 version값을 비교한다. 일치하면 수정한 내용을 DB에 반영하고, 틀리다면 ObjectOptimisticLockingFailureException을 발생시킨다. 코드는 아래와 같다. @Getter @Entity @Table(schema = "..
- Total
- Today
- Yesterday
- 복합키 Mapping
- Mapping
- Property
- JPA
- java generic
- Discriminate Mapping
- @Primary
- Embeddable Mapping
- Akka
- Typesafe Config
- SmartLifecycle
- Spring
- Registrar
- Criteria
- Spring Registrar
- Query DSL
- Sprint RetryTemplate
- DI
- docker
- Charles proxy
- scikit-learn
- Join Table
- java EqualsAndHashCode
- JPA Criteria
- Spring JDBC Template
- guava
- Embedded Mapping
- spring spel
- java Equals
- RetryTemplate
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |