일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DesignPattern
- springboot
- 클린코드
- Spring
- 프록시
- 링커
- gradle
- 토비의스프링
- 컴퓨터시스템
- Immutable
- springwebmvc
- hibernate
- String
- DispatcherServlet
- 빌드툴
- 토비의스프링3.1
- FunctionalInterfaces
- lambda
- JPA
- java
- beanfactory
- 메이븐
- exception
- ORM
- AutoConfiguration
- 자바
- ApplicationContext
- IOC
- Kotlin for Java Developers
- 링킹
- Today
- Total
목록JPA (3)
엔지니어로 가는 길

ddl-auto가 언제 적용되는지 알아보고, 이를 테스트해봄으로써 ddl-auto 옵션이 제대로 동작하지 않는 문제를 해결해보자. * 이제부터 편의상 hibernate.hbm2ddl-auto를 ddl-auto라고 부른다. ddl-auto 옵션이 적용되는 시점 ddl-auto 옵션은 Hibernate의 SchemaManagementTool이 관리한다. 그런데 SchemaManagementTool은 SessionFactory 라이프사이클의 일부로, SessionFactory가 생성되거나 종료될 때 자동으로 동작한다. 다시 말해, ddl-auto 옵션이 적용되는 시점은 SessionFactory가 생성되거나 종료되는 시점이다. 애플리케이션이 실행됐더라도, SessionFactory가 생성되기 전이라면 ddl-..

ORM이란 무엇인가 Object-relational mapping, ORM은 객체와 관계형 데이터베이스 사이에 존재하는 패러다임 불일치를 해소해준다. '패러다임 불일치'라는 어려운 단어 속에 많은 것이 압축되어 있다. 하나씩 살펴보자. 패러다임 불일치 객체와 관계형 데이터베이스는 지향하는 목적이 서로 다르므로 둘의 기능과 표현 방법도 서로 다르다. 따라서 객체를 관계형 데이터베이스에 저장할 때, 관계형 데이터베이스에 있는 데이터를 객체로 가져와 조작하고 싶을 때 문제가 발생하고 이 문제는 개발자가 (ORM이 없다면 더 많은) 시간과 비용을 들여 해결해야 한다. 패러다임 불일치의 예를 살펴보자. 상속 객체 세상에는 상속이라는 개념이 존재한다. 테이블은 상속이라는 개념이 없다. 상속 관계의 객체를 저장하기도..

@Embedded와 @Embeddable 다음과 같은 상황을 생각해보자. ToDo class 오늘 할 일 하나를 나타낸다. TDL class to-do-list를 나타낸다. List 타입의 객체를 프로퍼티로 갖는다. 이때 db에 위와 같은 정보를 저장하고 싶다면 어떻게 해야 할까? 가장 먼저 떠올린 방법은 ToDo를 하나의 테이블에 매핑하고, TDL 또한 하나의 테이블에 매핑한 뒤 두 클래스를 One-To-Many와 Many-To-One 관계를 맺게 하는 것이었다. 하지만 생각해보니 ToDo 클래스는 항상 TDL 안에서만 존재하며, TDL을 부르지 않고 ToDo만 불러올 일이 없을 것 같았다. 그래서 ToDo를 TDL의 Embedded로 설정하였다. Embedded로 설정하는 방법은 다음과 같다. ToD..