본문 바로가기

반응형

전체 글

(65)
[책 요약] 제로투원 제로투원 요약 0에서 1로 뭔가 새로운 것을 창조하면 세상은 0에서 1이 된다. 기존의 모범 사례를 공부하고 답습하는 것은 1에서 N으로 되는 길 (경쟁으로 가는 길) "오늘의 '모범 사례'는 우리를 막다른 길로 이끌 뿐이다. 우리를 성공으로 이끄는 것은 아직 가보지 않은 길, 새로운 길이다." "진정으로 남들과 다른 사람은 다수에게 반대하는 사람이 아니라 스스로 생각하는 사람이다." 창조적 독점 "이 책에서 '독점'이라고 하는 것은 자기 분야에서 너무 뛰어나기 때문에 다른 회사들은 감히 그 비슷한 제품조차 내놓지 못하는 회사 구글은 2012년 500억 달러를 벌어들였지만 (항공사들은 1,600억 달러) 매출의 21 퍼센트가 이익으로 항공사들의 100배 높은 수익 2020년 기준 주요 독점 기업의 마진율..
[하이버네이트 유저 가이드 파헤치기] JPA 2.1 AttributeConverters 실습 모든 실습 코드는 필자의 github의 리포지토리에서 볼 수 있다. 실습 환경은 spring boot(2.2.6) + kotlin이다. 자세한 사항은 build.gradle.kts 참고바란다. 공식 문서에 나와있는대로 해보기 우선 공식 문서의 예제를 그대로 재현해서 attributeConverter가 제대로 동작하는지 테스트해보겠다. example1. 엔티티 Event 정의 @Entity class Event( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(insertable = false, updatable = false) val id: Long? = null, @Convert(converter = PeriodStringConverte..
[하이버네이트 유저 가이드 파헤치기] JPA 2.1 AttributeConverters - 2.3.16 원래 순서상 2.3.6. Custom BasicTypes을 다뤄야겠지만 동일한 기능을 더 간단하게 구현할 수 있는 JPA 2.1 AttributeConverters 가 있어서 해당 기능을 다루고자 한다. 별도로 필자가 spring boot + kotlin 환경에서 AttributeConverters를 테스트해본 내용도 같이 작성할 예정이다. 2.3.16. JPA 2.1 AttributeConverters 비록 하이버네이트가 custom types를 제공해왔지만, JPA 2.1 구현체로서, AttributeConverter 역시 제공한다. 사용자 정의 AttributeConverter를 이용해 애플리케이션 개발자는 주어진 JDBC type을 엔티티 기본 타입으로 매핑할 수 있다. 아래 예제에서는 java...
[하이버네이트 유저 가이드 파헤치기] BasicTypeRegistry & Explicit BasicTypes - 2.3.4, 2.3.5 2.3.4. BasicTypeRegistry 우리는 이전에 하이버네이트 타입은 자바(JAVA) 타입도 SQL 타입도 아니지만, 하이버네이트 타입은 둘(자바 타입, SQL 타입) 모두를 이해하며 둘 사이의 변환을 수행한다고 언급했었다. 그러나 이전 챕터의 Example 3. 에서 어떻게 하이버네이트는 org.hibernate.type.StringType과 java.lang.String 속성이 연결되며, org.hibernate.type.IntegerType은 어떻게 java.lang.Integer 속성으로 연결되는지 알았을까? 정답은 org.hibernate.type.BasicTypeRegistry라고 불리는 하이버네이트 내부의 서비스에 있다. org.hibernate.type.BasicTypeRegist..
[하이버네이트 유저 가이드 파헤치기] @Basic 어노테이션 & @Column 어노테이션 - 2.3.1 ~ 2.3.3 2.3 Basic types Basic value type은 보통 단일 데이터베이스 칼럼과 집계되지 않는 단일 자바 타입(JAVA type)을 매핑한다. 하이버네이트는 JDBC 명세서에서 추천하는 자연스러운 매핑을 따르는 여러가지 내장된 기본 타입(basic type)을 제공한다. 내부적으로 하이버네이트는 특정한 org.hibernate.type.Type을 자바 타입과 데이터베이스 칼럼로 매핑할 떄 BasicTypeRegistry를 사용한다. 원문 Basic value types usually map a single database column, to a single, non-aggregated Java type. Hibernate provides a number of built-in basic type..
[하이버네이트 유저 가이드 파헤치기] 매핑 타입 - 2.1 2.1 매핑 타입 (Mapping types) 하이버네이트는 애플리케이션 데이터의 자바와 JDBC 표현을 모두 이해한다. 애플리케이션 데이터를 데이터베이스에서 조회하고 입력하는 기능은 하이버네이트 타입의 기능이다. 이런 사용 사례에서 타입은 org.hibernate.type.Type interface의 구현이다. 또한, 이 하이버네이트 타입은 자바 타입의 동등성 확인 방법이나 값 복사와 같은 다양한 행동적 측면을 설명한다. 필자 해설 잘 이해가 안 될 수 있는 대목이다. 이후 유저 가이드에서 자세하게 다룰 부분이지만 대략적으로 설명하겠다. 하이버네이트 타입 중 StringType은 JDBC 타입 VARCHAR과 자바 타입 java.lang.String를 연결해준다. 그렇기 때문에 애플리케이션 데이터를 D..
[하이버네이트 유저 가이드 파헤치기] 도메인 모델 - 2 Domain Model 도메인 모델이라는 용어는 데이터 모델링에서 유래되었다. 도메인 모델은 궁극적으로 당신이 작업하고 있는 문제 도메인을 설명하는 모델이다. 또한, 당신은 때때로 persistent classes라는 용어를 들어보았을 것이다. 궁극적으로 애플리케이션 도메인 모델은 ORM의 주요한 특성이다. ORM은 당신이 도메인 모델과 연결하기 원하는 클래스를 구성한다. 만약, POJO나 자바 프로그래밍 모델을 따르는 클래스라면 하이버네이트는 최고로 동작한다. 그러나, 이 규칙들은 전혀 어려운 요구사항이 아니다. 사실, 하이버네이트는 매우 조금만 당신의 persistent objects에 대해서 가정한다. (거의 가정하지 않는다는 뜻) 당신은 도메인 모델을 다른 방법으로도 표현할 수 있다. ( 예를 들..
[하이버네이트 유저 가이드 파헤치기] 아키텍처 - 1 이번 글은 원문을 번역하는 방식으로 하고, 추가적으로 Spring boot에서 EntityManager를 가져오는 방법을 추가적으로 다루고자한다. 번역은 의역으로 하되, 번역기의 의미 전달이 더 명료한 경우 그대로 구글 번역기의 번역을 사용하거나 다듬어서 차용했다. 유저 가이드의 설명이 부족한 경우에는 필자의 지식을 토대로 해설을 넣었고, 잘 모르는 내용은 참고 자료에 첨부된 자료들을 참고해서 작성했다. 하이버네이트 아키텍처에 대하여 위 다이어그램에서 알 수 있듯이 ORM 솔루션으로써 하이버네이트는 Java application data access layer와 RDBMS 사이에 알맞게 위치한다. 자바 애플리케이션은 하이버네이트 API를 데이터베이스에서 도메인 데이터를 불러오고, 저장하고, 질의하고, 그..

반응형