전체 글

나만의 글로 기록하기
·OpenSource
Hibernate 개발자 분과 소통하며 Jira에 관련 이슈를 등록한 기점으로 오픈소스에 관심이 생겼고,오픈 소스를 보는 것 자체가 너무 즐거워서 자바로 작성된 오픈소스들을 찾아봤다. 그 중, 우연히도 JabRef라는 논문 관리 오픈소스를 알게 됐다.(사실, Hibernate, Spring, elasticSearch 심지어 Kafka까지 모두 찾아봤었지만, 워낙 대중이고 많은 사람들이 사용하는 만큼 내가 직접 버그를 발견하거나 올라온 이슈를 해결하기에 버거움을 느꼈다.) https://github.com/JabRef JabRef e.V.JabRef e.V. has 46 repositories available. Follow their code on GitHub.github.com 그럼 내가 어떻게 오픈소..
·OpenSource
오픈소스 문제 해결에 참여해보고자 하이버네이트 지라에 업로드 된 버그 관련 이슈를 살펴봤습니다. 그러던 중 꽤 흥미로워 보이는 이슈를 발견했습니다.관련 지라 이슈글 (https://hibernate.atlassian.net/browse/HHH-19206)  이슈 내용 번역:Bytecode-enhanced dirty checking ineffective if entity's embedded ID set manually (to same value)특정 상황에서 Hibernate의 바이트코드 향상(Bytecode Enhancement) 기능을 사용할 경우, Embedded Identifier를 설정하면 다른 변경 사항이 업데이트되지 않는 버그가 발생할 수 있다. 예를 들어, 다음 코드는 data 필드 값을 "..
·Java
객체지향 프로그래밍에 대해 많은 것을 주워들었지만, 그래서 객체지향이라는 게 무슨 말이냐? 라고 물었을 때대답할 수 없는 스스로의 모습을 발견했습니다. 그리고 이를 해소해줄 만한 책 '객체지향의 사실과 오해'에 대해 알게 되어 책을 읽고 정리한 내용을 기록했습니다. 객체란?객체란 식별 가능한 개체 또는 사물이다. 객체는 자동차처럼 만질 수 있는 구체적인 사물일 수도 있고, 시간처럼 추상적인 개념일 수도 있다. 객체는 구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태를 가진다. 소프트웨어 안에서 객체는 저장된 상태와 실행 가능한 코드를 통해 구현된다. 객체의 상태(멤버변수, 필드)상태는 특정 시점에 객체가 가지고 있는 정보의 집합으로 객체의 구조적 특징을 표현한다. 객체의 상태는 객체에 존재하는 정적..
MySQL에서 조회 성능 개선을 위해 가장 자주 사용되는 Index에 대해 알아보겠습니다.(해당 내용은 InnoDB 스토리지 엔진을 기준으로 작성했습니다.)  MySQL 공식문서에서 Index는 Optimization 영역으로 구분되어 있습니다.특히, 조회 성능을 높이는 최고의 방법으로 Index를 직접적으로 언급하며, 인덱스의 사용을 강조하고 있습니다.더보기 인덱스란?공식문서에는 다음과 같이 작성되어 있습니다. MySQL can quickly determine the position to seek to in the middle of the data file without having to look at all the data. This is much faster than reading every row..
·Java
최근 받은 코드 리뷰에서 VO에 대한 필요성을 느끼고 직접 공부하고 적용하는 과정을 담았습니다.  VO(Value Object)는 무엇일까?번역하면 '값 객체'이다. 이는 고유 식별자가 없고 변경 불가능한 특성을 가진 객체를 말한다. 객체 자체가 아니라 값이 중요한 경우에 사용된다. VO는 다음과 같은 특성을 지니고 있다.불변성(Immutability): 한 번 생성되면 상태는 변경될 수 없다.동등성(Equality): 식별자와 관계 없이, 같은 값(value)을 갖는다면 같은 것으로 간주한다.캡슐화(Encapsulation): 도메인 개념을 캡슐화하고 특정한 값에만 집중하도록 분리함으로써 복잡성을 줄인다.유효성(Validation): VO가 표현하는 값은 항상 도메인 규칙에 따라 유효하도록 보장한다.이..
·Spring
티켓 예매 테스트 코드를 작성하던 중 save() 메서드에서 StaleObjectStateException 에러가 발생했다. Row was updated or deleted by another transaction ( or unsaved-value mapping was incorret )다른 트랜잭션에 의해서 레코드(Row)가 변경됐다고? 난 분명 다른 트랜잭션을 Test 코드에 넣지 않았는데..?그럼 unsaved-value mapping? 이건 무슨 말일까 hibernate 공식 문서를 참고해봤다.  공식 문서https://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/mapping.html  정리하면 detached 상태와 구분하기 위해 unsav..