분류 전체보기
-
정규화데이터베이스 2021. 5. 3. 22:38
제1정규형 : 모든 속성은 반드시 하나의 값을 가져야한다. 연락처라는 컬럼에 집번호, 핸드폰 번호, 직장번호를 섞어서 넣는다면 값을 구별하기 어려워지고, 불안정한 데이터 구조를 양산하고, 개발 오류 및 데이터 품질 문제까지 야기할 수 있다. 다른 예로 주문이라는 테이블을 가진 모델을 본다면, 컬럼에 Product1,Product2 가 있을 경우 상품을 2개까지만 주문할 수 있고 갯수를 늘리고 싶다면 컬럼을 추가해야하는데, 이는 대부분 DBMS 에서 lock 을 발생시키기 때문에 이런 작업은 트랜젝션이 적은 시간대에 서비스 중단을 감행하고 실행한다. 또, 상품1,상품2를 빠르게 조회하기 위해 index 추가를 고려해야하는데 이는 조회 기능 외 나머지 수정,입력,삭제 속도가 느려진다는 것을 고려해야한다. 주..
-
식별자데이터베이스 2021. 5. 2. 16:26
주식별자의 특징 -유일성, 최소성, 불변성, 존재성 식별자 분류 분류 식별자 내용 대표성 여부 주식별자 엔티티 내 각 어커런스를 구분할 수 있는 구분자. 참조관계 연결할 수 있는 식별자 보조식별자 엔티티내 각 어커런스를 구분할 수 있으나, 대표성을 가지지 못해 참조성을 연결할 수 없다. 스스로 생성 여부 내부식별자 엔티티 내부에서 스스로 생성되는 식별자 외부식별자 타 엔티티와의 관계를 통해 타 엔티티에서 받아오는 식별자 속성 수 단일식별자 하나의 속성으로 구성된 식별자 복합식별자 둘 이상의 속성으로 구성된 식별자 대체 여부 본질(원조) 식별자 업무에 의해 만들어 지는 식별자 인조식별자 원조식별자가 복잡한 구성을 갖고 있어 인위적으로 만든 식별자 주식별자 도출기준 1. 업무에서 자주 이용되는 속성을 주식별..
-
엔티티, 속성,관계데이터베이스 2021. 5. 2. 14:44
엔티티 엔티티는 사람, 장소, 물건, 사건, 개념 등의 명사에 해당한다. 엔티티는 업무상 관리가 필요한 관심사에 해당한다. 엔티티는 저장이 되기 위한 어떤 것이다. 엔티티란 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것으로 설명할 수 있다. 또, 엔티티는 업무 활동상 지속적인 관심을 가지고 있어야 하는 대상으로서 그 대상들 간에 동질성을 지닌 인스턴스들이나 그들이 행하는 행위의 집합으로 정의할 수 있다. 엔티티는 그 집합에 속하는 개체들의 특성을 설명할 수 있는 속성을 갖는다. 이러한 속성 가운데는 엔티티 인스턴스 전체가 공유할 수 있는 공통 속성도 있고, 엔티티 인스턴스 중 일부에만 해당하는 개별 속성도 있을 수 있다. 또한 엔티티는 인스턴의 집합이라고 말할 수 있고, 반대로 인스턴..
-
데이터 모델링데이터베이스 2021. 5. 1. 12:27
모델링이란 -복잡한 "현실세계"를 단순화해 표현하는 것 -"현실세계"를 추상화한 반영 -모델이란 사물 또는 사건에 관한 양상(Aspect) 이나 관점(Perspective)을 연관된 사람이나 그룹을 위해 명확하게 하는 것 모델링의 특징 -추상화는 현실세계를 일정한 형식에 맞추어 표현하는 것. -단순화는 복잡한 현실세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현하여 쉽게 이해할 수 있도록 하는 개념 -명확화는 누구나 이해하기 쉽게 하기 위해 대상에 대한 애매모호함을 제거하고 정확하게 현상을 기술하는 것 모델링의 세가지 관점 -데이터 관점 : 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의 관계는 무엇인지에 대해 모델링하는 방법(what) -프로세스 관점: 실제하고 있는 업무는 무엇인지 또는 ..
-
JPA > Fetch Join , BatchSizeBackEnd/JPA 2021. 4. 27. 21:18
JPQL 에서 성능 최적화를 위해 제공하는 기능으로, 연관된 엔티티나 컬렉션을 SQL 한번에 함께 조회할 수 있다. (일반 조인 시 연관엔티티를 함께 조회하지 않고, 사용할 때 새로 select 해온다.) select m from Member m join fetch m.team => SELECT M.* , T.* FROM MEMBER M INNER JOIN TEAM T ON M.TEAM_ID=T.ID 즉시 로딩과 유사하게 모든 데이터를 한 번에 Inner Join 으로 가져온다. Fetch Join 에서는 어떤 객체 그래프를 한번에 조회할 것인지 명시한 것이 다르다. 2021.04.25 - [BackEnd/자바&스프링] - JPA > 즉시로딩 , 지연로딩 에서 언급한 N +1 문제를 해결할 수 있는 방법..
-
JPA 경로표현식BackEnd/JPA 2021. 4. 27. 20:43
경로 표현식이란 .(점) 을 찍어 객체 그래프 를 탐색 하는 것을 말한다. 상태 필드, 단일값 연관 필드, 컬렉션값 연관 필드가 있다. 이들은 내부적으로 동작하는 방식, 결과가 달라져 구분해야한다. 특징 탐색 상태 필드 단순히 값만 저장하기 위한 필드 경로 탐색의 끝 x 단일값 연관 필드 연관관계를 위한 필드, 타킷이 엔티티일 때 @ManyToOne, OneToOne 묵시적 내부 조인 o 컬렉션값 연관 필드 컬렉션을 위한 필드 묵시적 내부 조인 x | o(가능) 상태필드 select m.username from Member m 단일값 연관 필드 select m.team from Member m 탐색 -> select m.team.name from Member m select o.member.team fr..
-
JPA > JPQL, 프로젝션BackEnd/JPA 2021. 4. 27. 19:11
JPA 를 사용할 때 EntityManager.find() 를 사용하면 엔티티 하나를 조회할 수 있다. 하지만 특정 조건이 있는 모든 객체를 검색하고자 할 때는 보다 복잡한 검색 방법이 필요하다. JPQL 테이블이 아닌 엔티티 객체를 대상으로 검색하는 객체지향 쿼리 SQL 을 추상화해서 특정 벤더에 의존적이지 않다. JPA 는 JPQL 을 분석해 SQL 을 생성하고 실행한다. JPQL 은 아래와 같은 형태로 작성된다. select m from Member as m where m.age > 18 1. 대소문자 구분 Member 와 age 같은 엔티티와 속성은 대소문자를 구분한다. 2. 엔티티 이름 Member 는 클래스 명이 아니라 엔티티 명이다. 엔티티명은 @Entity(name="") 으로 지정할 수 ..
-
상속보다는 컴포지션을 사용하라 > 이펙티브 자바 아이템18BackEnd/자바 2021. 4. 26. 17:13
HashSet 에 안에 있는 요소를 count 하는 기능을 추가한 InstrumentedHashSet 이라는 클래스를 만들고자 할 때, HashSet 을 상속해서 만들면 어떤 결과를 가져올까 ? public class HashSet extends AbstractSet implements Set, Cloneable, java.io.Serializable { static final long serialVersionUID = -5024744406713321676L; private transient HashMap map; // Dummy value to associate with an Object in the backing Map private static final Object PRESENT = new Obj..