전체 글 (26) 썸네일형 리스트형 [Spring] DAO는 어떤 값을 주고 받아야 할까?(DAO, DTO, Entity) 우아한 테크코스에서 처음 스프링을 사용하는 미션을 진행하면서 처음 접하는 개념들이 많았지만 가장 많은 고민을 했던 ‘데이터베이스의 관리는 어떻게 이루어지는가?’에 대해 정리하고자 한다. 우선 본격적인 내용을 소개하기 앞서 이해하면 좋은 개념 3가지를 간단히 정리하고자 한다. DAO, DTO, Entity를 스프링을 이용한 웹 프로그래밍 관점에서 주관적으로 정리했으므로 일반적인 개념들과 다를수도 있다. DAO (Data Access Object) 프로그래밍 분야에서 DAO는 데이터베이스나 여러 persistence mechanism (영속구조) 에 대한 추상 인터페이스를 제공하는 객체이다. DB에 접근하려는 여러 호출들을 persistence layer에 매핑시킴으로써 DAO는 데이터베이스의 상세한 사항을.. [Gradle] gradle 빌드 오류 해결 컴퓨터 이름이 한글로 되어 있어서 영어로 바꾸는 대공사를 한 지 얼마되지 않아 IntelliJ에서 gradle 관련해서 문제들이 좀 생기기 시작했다. 이미 필요한 파일들이 build되어 있는 프로젝트를 git에서 repository를 다운로드받았을 때는 문제가 없지만 처음부터 gradle 프로젝트를 만들었을 때 build가 되지 않는 오류가 생겼다. 인터넷에서 java와 gradle의 버전을 맞춰준다든가, build.gradle의 내용을 고쳐주는 방법들을 다 시도해보았지만 해결되지 않았지만 의외로 허무하게 해결이 되어서 혹시 같은 문제를 가지는 사람이 있을까 싶어 공유한다. 단순히 관리자 권한으로 IntelliJ를 실행하면 된다. 매번 관리자 권한으로 실행하기 귀찮다면 '우클릭-속성-호환성-관리자 권한으.. [Spring 공식문서] Spring Core 1.1 ~ 1.3 😅 우선 글을 작성하기에 앞서 이 글은 스프링을 처음 공부하는 입장에서 Spring 공식 문서를 자의적으로 해석한 글이며 (번역기의 도움을 받아) 제게 필요하다고 생각되는 부분을 우선적으로 해석할 예정이라 중간중간 빈 부분이 있을 수 있으며 틀린 내용이 포함되었을 수 있습니다. 잘못된 부분이 있을 때 피드백 남겨주시면 능력껏 반영하도록 하겠습니다. 1. IoC 컨테이너 1. 1 Spring IoC 컨테이너 및 Bean 소개 이 장에서는 Inveresion of Control(IoC) 원칙을 구현하는 Spring Framework를 다룹니다. IoC는 종속성 주입(DI)이라고도 합니다. 종속성은 객체가 다른 객체의 생성자나, 팩터리 메서드의 인수로 넘겨지거나 다른 객체 내부의 인스턴스로 선언될 때 발생하는.. [Effective Java] equals를 재정의하려거든 hashCode도 재정의하라 equals를 재정의한 클래스 모두에서 hashCode도 재정의해야 한다. 그렇지 않으면 hashCode 일반 규약을 어기게 되어 해당 클래스의 인스턴스를 HashMap이나 HashSet같은 컬렉션의 원소로 사용될 때 문제를 일으킨다. 👍 hashCode 재정의 규약 equals 비교에 사용되는 정보가 변경되지 않았다면, 애플리케이션이 실행되는 동안 그 객체의 hashCode 메서드는 몇 번을 호출해도 일관되게 항상 같은 값을 반환해야 한다. 단, 애플리케이션을 다시 실행한다면 이 값이 달라져도 상관없다. equals(Object)가 두 객체를 같다고 판단했다면, 두 객체는 hashCode는 똑같은 값을 반환해야 한다. (특히 중요🤩🤩) equals(Object)가 두 객체를 다르다고 판단했더라도, 두 .. [Effective Java] equals는 일반 규약을 지켜 재정의하라 🧐 equals를 재정의할 필요가 없는 경우 각 인스턴스가 본질적으로 고유하다. 인스턴스의 '논리적 동치성'을 검사할 일이 없다. 상위 클래스에서 재정의한 equals가 하위 클래스에도 딱 들어맞는다. 클래스가 private이거나 package-private이고 equals 메서드를 호출할 일이 없다. 🤔 equals를 재정의해야 할 때는 언제일까? 객체 식별성(두 객체가 물리적으로 같은가)을 확인하는 것이 아니라 논리적 동치성을 확인해야 하는데, equals가 논리적 동치성을 비교하도록 재정의되지 않았을 때 주로 값 클래스들이 이 경우에 해당한다. (ex. Integer, String) 😁 Equals 메서드를 재정의할 때의 규약 1. 반사성 (Reflexivity) null이 아닌 모든 참조 값 x에.. [우아한 테크코스] 레벨 1 - 사다리 미션 회고 우테코에서의 두 번째 미션은 사다리 만들기!!! 저번과 마찬가지로 아래는 미션을 진행한 repository와 PR 목록들입니다. 사다리 게임 repository GitHub - Ohjintaek/java-ladder: 사다리타기 미션을 위한 저장소 사다리타기 미션을 위한 저장소. Contribute to Ohjintaek/java-ladder development by creating an account on GitHub. github.com 1차 PR [1단계 - 사다리 생성] 썬샷(오진택) 미션 제출합니다. by Ohjintaek · Pull Request #67 · woowacourse/java-ladd 안녕하세요 영이. 우테코 5기 썬샷입니다. 리뷰 맡아주셔서 감사드립니다. 이번 미션 1단계 때에.. [JAVA] LinkedHashMap의 방어적 복사 Map.copyOf() 와 Collections.unmodifiableMap() 우아한 테크코스에서 블랙잭 미션을 하다가 입력된 Player들의 순서대로 결과를 보여주고 싶어서 LinkedHashMap으로 Player의 이름과 게임 결과를 묶어서 전달해주었다. 게임 결과를 계산하고 저장하는 객체에서 외부에서 게임 결과를 요청받았을 때 LinkedHashMap을 넘겨주도록 했는데 내부에 저장된 요소를 수정하지 못하도록 방어적 복사를 해서 넘겨주려고 Map.copyOf()를 사용했다. 그런데 최종 결과를 출력할 때 Player들의 순서를 보장해주지 않는 문제가 발생했다. 아마도 Map.copyOf() 메서드가 LinkedHashMap()처럼 순서를 보장해주지 않는 것으로 보였다. 이전 미션 때 '정말 간편한.. [Effective Java] 상속보다는 컴포지션을 사용하라 🤔 상속은 왜 사용하는 거지? 이미 만들어져 있는 클래스를 재사용할 수 있기 때문에 효율적이고 중복된 코드가 줄어들어 코드가 간결해진다. 공통적인 기능을 부모 클래스에 추가해주면 상속받은 여러 개의 자식 클래스에서 사용이 가능하기 때문에 확장성 또한 용이하다. 🧐 상속의 종류 구현 상속 (클래스 상속) 예시 코드 public class SimpleList { String[] simpleList; int size; SimpleList() { simpleList = new String[10]; size = 0; } void add(String value) { simpleArrayList[size] = value; size += 1; } } public class SimpleArrayList extends S.. 이전 1 2 3 4 다음