데이터베이스

데이터베이스

    [ORM] 상속 관계 매핑

    객체 지향 언어에서는 '상속' 관계가 존재합니다. 그러나 관계형 데이터베이스에는 상속이라는 개념이 없는데요, 그래도 가장 유사한 관계가 '슈퍼타입 서브타입 관계'라는 모델링 기법입니다. 그리고 이 '슈퍼타입 서브 타입 관계'라는 논리적 모델을 실제 물리 모델(테이블)로 구현할 때는 3가지 방법이 있습니다. 1. 각각의 테이블로 변환시키고 조인하는 방법 JPA에서는 '조인 전략' (Joined)이라고 부릅니다. 구체적으로 엔티티 각각을 테이블로 모두 만들고 부모 테이블의 기본키를 받아서 이를 기본키이자 외래키로 사용합니다. 그래서 조회할 때 조인을 자주 사용합니다. 주의할 점은 객체는 타입으로 하위 객체들을 구분할 수 있지만 테이블은 타입의 개념이 없으므로 따로 구분하는 컬럼을 부모 테이블에 추가해야합니다..

    [ORM] 연관관계의 주인을 정해야하는 이유

    추후 업데이트될 수 있는 포스팅입니다. Spring Boot에서 간단한 도메인을 만들다가 작성하는 포스팅입니다. 현재 데이터베이스로 관계형 데이터베이스를 쓰기 때문에 이를 객체와 매핑시키기 위해 JAVA 진영의 ORM 기술 표준인 JPA를 사용합니다. 객체가 연관관계를 다루는 방법과 테이블이 연관관계를 다루는 방법에는 차이가 있습니다. 객체는 객체의 주소를 참조해서 연관관계를 맺습니다. 그래서 도메인 A에서 도메인 B의 객체 주소를 참조하면, 도메인 A를 조회 시 B를 함께 조회할 수 있지만, B에서는 A의 존재를 모릅니다. 이는 다시 말해 단방향의 연관관계를 맺는 것이라 말할 수 있습니다. 각 필드를 참조하고 JPA가 연관관계를 맺은 것을 알 수 있도록 애너테이션을 붙여야합니다. 일대다 관계의 경우, ..

    영속성 컨텍스트

    영속성 컨텍스트

    EntityManager EntityManager는 Entity(객체와 테이블이 매칭되는 개념)를 관리하는 역할을 합니다. EntityManagerFactory가 요청이 올때마다 생성하는 비용이 매우 크기 때문에, 대신 생성비용이 거의 없는 EntityManager가 생성됩니다. public interface EntityManagerFactory { /** * Create a new application-managed EntityManager. * This method returns a new EntityManager instance each time * it is invoked. * The isOpen method will return true on the returned instance. * @ret..

    [MySQL]날짜/시간 타입과 TIMESTAMP 칼럼 생성

    [MySQL]날짜/시간 타입과 TIMESTAMP 칼럼 생성

    MySQL의 날짜/시간 타입 MySQL의 날짜/시간타입으로는 DATE, DATETIME, TIME, TIMESTAMP가 있다. DATE 타입은 날짜만 포함하는 타입 YYYY-mm-dd 형식으로 입력 가능 1000-01-01부터 9999-12-31까지만 입력 가능 DATETIME 타입은 날짜와 시간을 모두 포함하는 타입 YYYY-mm-dd HH:MM:SS 형식 입력 가능 1000-01-01 00:00:00부터 9999-12-31 23:59:59까지 입력가능 TIME 타입은 시간만 포함하는 타입 HH:MM:SS 형식으로 입력 가능 -838:59:59부터 838:59:59까지 가질 수 있음 TIMESTAMP 타입은 날짜와 시간을 모두 포함하는 타입 YYYY-mm-dd HH:MM:SS 형식 입력 가능 1970-..

    [MySQL Workbench] ERD를 SQL 코드로 변환하기

    [MySQL Workbench] ERD를 SQL 코드로 변환하기

    기존에 생성되어있던 DB가 있었는데 MySQL의 서버작동 문제로 재설치를 하게되면서 기존의 DB로 ERD를 생성해논 것을 다시 SQL코드로 변환시키고자 한다. 기존에 ERD 다이어그램이 있다면 1. 우선 ERD 를 불러온다. 왼쪽목록에서 두번째 것을 클릭하면 기존에 있던 모델들이 나온다. 해당하는 모델을 클릭한다. 2. 이 화면이 뜨면 기존에 만들어논 EER Diagram 이 한개 보인다. 이것을 클릭! 기존에 ERD 다이어그램이 없다면 1. 메인화면에서 왼쪽 두번째 목록을 누르면 해당 화면이 뜬다. + 버튼을 클릭! 2. Add Diagram을 클릭하면 빈 창이 뜨는데, 거기서 ERD를 만들어나가면 된다. 3. 완성된 ERD 다이어그램을 SQL 코드로 변환해보자. 4. 연결할 DB 의 정보들을 넣어준다..

    cmd로 MongoDB에 데이터 저장하기

    cmd로 MongoDB에 데이터 저장하기

    mongoDB와 mongoDBCompass는 이미 설치되어있다고 가정한 상태입니다. cmd를 이용해서 간편하게 데이터베이스를 생성하고 컬렉션과 fileds를 넣어보자. 물론, MongoDBCompass를 사용하면 제일 편하지만, GUI보다 먼저 직접 코드로 쳐서 해보는걸로 시작하는게 좋은 것 같다. window의 cmd에 들어가서 >>mongo 라고 치게 되면, mongoDB로 이동~! >>db 라고 치면, 아마 디폴트 DB로 test가 나올것이다. 그리고 내가 생성하고자하는 데이터 베이스를 넣어주는데, >>use FaceImg 'FaceImg'라는 DB를 생성해주면서 해당 데이터베이스로 변환된다. 이제 collection을 생성해보자! >>use faces 'faces'라는 컬렉션을 생성했다. 그리고,..