분류 전체보기

데이터베이스

[DATABASE] - NULL의 의미와 Three-Valued Login

Three-Valued Login논리 시스템에서 세 가지 논리값 - TRUE, FALSE, UNKNOWN을 허용하는 개념입니다.데이터베이스(SQL)와 프로그래밍에서 NULL 값을 다룰 때 사용됩니다.Three-Valued Logic 개념일반적으로 논리 연산은 이진 논리(Binary Logic, TRUE/FALSE) 를 기반으로 하지만 Three-Valued Logic (3VL)에서는 다음과 같은 세 가지 값을 가집니다.TUREFALSEUNKNOWN (알 수 없음)Three-Valued Logic이 필요한 이유SQL에서는 NULL 값이 존재하기 때문에, 단순한 참/거짓 논리로 처리할 수 없는 경우가 발생합니다.NULL = NULL ? TRUE가 아니라 UNKNOWN이 됩니다.SQL에서 Three-Value..

개발지식

[개발지식] 다이나믹 프로그래밍(Dynamic Programming) - 경험을 기록하는

다이나믹 프로그래밍(동적 계획법)큰 문제를 작은 문제로 나누어 해결하고, 그 결과를 저장하여 동일한 작은 문제가 다시 등장했을 때 재계산하지 않고 저장된 값을 재사용하는 방식 아래의 조건을 충족해야 다이나믹 프로그래밍을 사용할 수 있다.🔥핵심 개념 : 부분 문제(Overlapping Subproblems) + 최적 부분 구조(Optimal Substructure)부분 문제 : 큰 문제를 작은 문제로 나누었을 때, 동일한 작은 문제가 여러 번 반복해서 나타나는 경우최적 부분 구조 : 문제의 최적 해결 방법이 그 하위 문제들의 최적 해결 방법을 조합하여 만들 수 있는 경우DP 해결 방식Top-Down (메모이제이션, Memoization)재귀(Recursion) + 캐싱(변수에 저장)큰 문제를 작은 문제로..

Java

[Java] Comparator와 Comparable - 경험을 기록하는

Comparator와 Comparable객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스기본적으로 정렬(자리바꿈)은 대상과 기준이 필요하다.Comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자 할 때 사용Comparable : 기본 정렬기준을 구현하는 데 사용public interface Comparator { int compare (Object o1, Object o2); // o1, o2 두 객체를 비교 boolean equals (Object obj); // equals를 오버라이딩하라는 뜻}public interface Comparable { int compareTo (Object o); // 주어진 객체 (o)를 자신과 비교}compare()와 comp..

개발지식

[자료구조] Map, HashTable 핵심만 모아보기 - 경험을 기록하는

MapKey-Value로Key-Value로 데이터를 저장하는 ADT(추상 자료형)key는 중복될 수 없다.Associative Array, Dictionary라고 불리기도 한다.Hash Table(Hash Map)배열과 해시 함수(hash function)를 사용하여 Map을 구현한 자료 구조(일반적으로) 상수 시간으로 데이터에 접근하기 때문에 매우 빠르다.Hash Function임의의 크기를 가지는 type의 데이터를 고정된 크기를 가지는 type의 데이터로 변환하는 함수(hash table에서)임의의 데이터를 정수로 변환하는 함수예를 들어) "김철수" 라는 이름을 hash function을 거치면 20030이 나온다. 이렇게 해시를 통해"김철수"라는 이름이 중복되지 않게 유지한다.hash table은..

개발지식

[자료구조] Set, HashSet, HashMap - 경험을 기록하는

Set중복 허용 X순서 보장 X(순서를 보장하는 경우도 있음)Set은 ADT(Abstract Data Type)이다Set은 Interface이고 Set을 구현한 구현체인 HashSet, SortedSet 등이 있다.HashSetHashSet의 구현체는 HashMap이다.HashMap은 key:value로 테이블 형태로 데이터를 저장key는 중복X, value는 중복 OHashSet에서 사용하는 HashMap은 Key만 사용하고 Value부분에는 그냥 0,1 같은 dummy 값을 넣는다.HashMapkey:value로 데이터를 저장특징삽입, 삭제, 갱신, 탐색이 O(1)(상수) 시간에 처리된다.상수시간으로 데이터가 처리된다는 것은 아무리 데이터가 커지더라도 일정 시간 안에 데이터를 처리 가능하다.반대로, ..

Spring Data JPA

[JPA] 연관관계 매핑_일대일(1:1) - 경험을 기록하는

일대일각 엔티티는 상대 엔티티와 하나의 관계만을 가집니다. 데이터베이스에서는 외래키에 UNIQUE 제약조건이 추가된 상황 사용 예시Member@Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "TEAM_ID") private Team team; @OneToOne @JoinColumn(name = "LOCKER_ID") p..

Spring Data JPA

[JPA] 연관관계 매핑_일대다(1:N) - 경험을 기록하는

일대다(1:N)한 엔티티의 인스턴스가 다른 엔티티의 여러 인스턴스와 연관되는 관계예) 한 명의 작가가 여러 권의 책을 쓸 수 있는 경우 '일' 쪽에서 외래키를 관리객체입장에서 TEAM에서 외래키를 관리, 데이터베이스는 '다' 쪽에서 외래키를 관리한다. Team@Entity public class Team { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "TEAM_ID") private Long id; private String name; @OneToMany @JoinColumn(name = "TEAM_ID") private List members = new ArrayList();위 코드를 보면 일대다 관계에서 '일..

Spring Data JPA

[JPA] 연관관계 매핑_다대일(N:1) - 경험을 기록하는

연관관계 매핑에는 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)가 있습니다. 이번 포스팅에서는 다대일(N:1)에 대해서 알아보겠습니다.다대일(N:1)가장 많이 사용되는 연관관계 매핑 중 하나한 엔티티의 여러 인스턴스가 다른 엔티티의 단일 인스턴스와 연관되는 관계예) 여러 주문이 하나의 회원에 속하는 경우양방향 연관관계의 경우 "다" 쪽이 주인이 됩니다.사용 상황부모-자식: 부서와 직원, 카테고리와 제품 등의 관계주문-고객: 여러 주문이 하나의 고객에 속하는 경우블로그 포스트- 작성자: 여러 포스트가 하나의 작성자에 속하는 경우사용 빈도실제 비즈니스 도메인에서 이러한 관계가 매우 흔하기 때문에 가장 많이 사용되는 연관관계 매핑이다.장점단순하고 이해하기 쉬운 관계양방향 매핑 시 객체 ..

데이터베이스

[DB] 트랜잭션 - 경험을 기록하는

트랜잭션이란데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위데이터의 무결성, 일관성을 유지하기 위해 중요한 역할을 한다. 트랜잭션의 작업 단위트랜잭션은 여러 작업을 하나의 단위로 묶어 처리한다. 이는 데이터베이스 시스템의 무결성을 유지하기 위해 중요합니다. 예) 은행 계좌 간의 A계좌에서 금액을 차감하고 B계좌에 금액을 추가하는 두 개의 작업이 하나의 트랜잭션으로 처리된다.트랜잭션 관리DBMS에서 제공하는 기능으로, 다름과 같은 명령을 사용합니다.BEGIN TRANSACTION 또는 START TRANSACTION: 트랜잭션의 시작을 알림COMMIT: 트랜잭션 모든 작업이 성공적으로 완료되었음을 알리고, 변경 사항을 영구적으로 반영ROLLBACK: 트랜잭션 중 오류가 발생했을 때, 모든 변경사항..

Spring Data JPA

[JPA] 양방향 연관관계와 연관관계의 주인 - 2 - 경험을 기록하는

저번 포스팅에서는 양방향 연관관계의 기본적인 부분에 대해서 알아보았습니다.이번에는 양방향 연관관계를 맺을 때 주의해야 할 점에 대해서 알아보겠습니다.모든 코드는 Github 에 올라와있습니다.양방향 매핑 시 자주 하는 실수mappedBy 된 변수에 값을 입력하려고 한다.분명히 team.getMembers()를 통해서 값을 넣어줬다. 하지만 H2 DB에 가서 조회를 해보면?Member 테이블에 TEAM_ID = null인걸 확인할 수 있다. 값이 들어가지 않은 것이다.team.getMember.add(member)로 값을 넣어줬지만 왜 값이 들어가지 않은 것일까?기본적으로 mappedBy 속성이 붙은 변수는 JPA에서 조회 용도로 사용된다.member에 team을 넣고 싶다면 member.setTeam(t..

여행하는 개발자(SOO)
'분류 전체보기' 카테고리의 글 목록