전체 글 174

[JPA] 15. 짜잔! 사실 이건 상속관계 매핑은 아닙니다. @MappedSuperclass

혹시몰라 나중에 바뀔지도... 이제 상속관계 매핑에 관련된 마지막 어노테이션이다. @MappedSuperclass 근데 사실 이건 상속관계 매핑을 해주는 어노테이션은 아니다. 그저 공통적인 매핑정보를 따로 만들어주기 귀찮기에 만드는 용도이다. 예를 들어, Team과 Member 객체가 동일하게 id, name, createdDate, updatedDate를 가지고 있어야 한다고 가정하자. (왜 그런거 있잖아요 게임할 때 비밀번호 수정 안하면 바꾸라고 알림넣어주고 길드 공지나 게시글 같은거 없으면 좀 쓰라고 길드가 한달동안 한 일이 없다고 닥달하는거!) 그럴 때, 이런 어노테이션을 넣어주면 참 편하다. 코드로 보여주자면, @MappedSuperclass public class BaseEntity { @Id..

[개발생각] 리세마라 : 다시해보는 우테코 프리코스 5기 3주차

한짤 요약 Source Code : https://github.com/JangAJang/WoowaCourse_Preview/tree/main/3주차_로또_re 이번엔 3주차 로또게임을 다시 풀어보았다. 사실 저번 리뷰를 봤다면 알 수 있지만, 상당히 마음에 들지 않는 결과가 나왔다. 그런데, 이번 짤은 괜찮잖아? 만족하긴 했다. (물론 고칠게 없다는 것은 아니다.) 코드의 기능목록 작성후 도메인 로직 테스트코드를 전부 끝내고 코드를 작성하기 시작했다. 저번에 아쉬웠던 enum, Exception에 따른 행동방식을 고치려고 노력했다. 사실 저번 주차부터 생성자를 최대한 써먹기 위한 방법을 많이 고려했고, 이에 따른 변화를 개인적으로 느낄 수 있었다. enum부터 비교를 보자면, 이전 로직 public en..

장's 개발생각 2022.11.29

[JPA] 14. 객체는 원래 있는건데 DB에는 원래 없는 거 = 상속관계

상속관계 매핑 자바의 객체, 즉 클래스는 상속을 받을 수 있다. extend를 쓰면 해당 클래스의 메서드나 인스턴스를 쓸 수 있다. 하지만 데이터베이스는 그렇게 되어있지 않다. 말 그대로 관계형 데이터베이스로, 외래키를 이용한 관계들이 얽혀 있어 이를 이용해 객체의 상속을 표현해야 한다. 논리모델을 사진과 같이 구성해, 이를 물리 모델화 시켜야 한다. 물리 모델화 시킨다는 것은 실제 데이터베이스에 들어가는 방식을 설정해야 한다는 것이다. 이 때 크게 3가지 방법이 있는데 조인전력, 단일 테이블 전략, 구현 클래스마다 테이블 전략이 있다. 1. 각각 테이블로 -> 조인 전략 구분자 DTYPE을 메인 테이블에 두고, 구분자를 통해 조인되어 상속을 처리한다. 정규화가 잘 되어있는 편이다. 2. 통합 테이블로 ..

[개발생각] 리세마라 : 다시해보는 우테코 5기 2주차

한짤 요약 Source Code : https://github.com/JangAJang/WoowaCourse_Preview/tree/main/2주차_숫자_야구_게임_re 사건의 발단 : 사건의 과정 : 결과 : 이전에 풀었던 2주차 프리코스를 다시 한번 풀어보았다. 일단 써보고 이전의 코드를 다시 보며 느낀점을 요약해보아야 겠다. 모델에 서비스라는 로직을 잘못생각하고 이전 2주차를 풀었다. 모델과 서비스가 아니라, 도메인이라는 기능을 하는 가장 작은 단위와 이들의 로직이 동작하는 모델이 존재하고, 이 모델을 컨트롤러에서 불러와 뷰와 연결시킨다. 결국, 객체의 동작 과정은 모델 -> 서비스 -> 컨트롤러 -> 뷰 -> 컨트롤러 -> 서비스 -> 모델 로 모델이 여러개 존재하는 방식으로 정리했었던 과거의 구..

장's 개발생각 2022.11.26

[개발생각] 우아한테크코스 5기 4주차 다리게임 회고

시작되는 한장짤 Source Code : https://github.com/woowacourse-precourse/java-bridge/pull/106 이번 우테코는 뭐랄까 여태까지 배운 것들을 마무리하면서 해보고 싶은 방향들을 전부 써보면서 즐기듯이 코딩을 했던 것 같다. 사실 코딩은 그랬지 다른게 너무 바빴다. 전공시험에 과제에....(그스님 으그르스으....!) 그래도 코딩 측면에서는 여태까지 공부했던 모든 부분들을 다시 돌아볼 수 있었다. TDD를 들어보며 테스트를 먼저 만들기 위해 어떻게 생각해봐야 할지를 다시 생각해 볼 수 있었고, DDD를 들어보며 도메인적으로 어떻게 도메인을 나누고 이를 어떻게 모델화시켜 모든걸 합쳐 하나의 시퀀스를 만들 수 있는지 생각해볼 수 있었다. # 기능 목록 ## ..

장's 개발생각 2022.11.23

[개발생각] 우아한테크코스 5기 3주차 로또 후기

이전 게시물은 [개발공부] 우아한테크코스 5기 2주차 숫자야구 후기 를 보시면 됩니다!! Source Code : https://github.com/JangAJang/java-lotto/tree/JangAJang 한장 요약 6전공중에 2전공의 2차시험으로 우테코 제출마감일 저녁에 우테코에 대한 생각과 시험공부를 병행하고, 이도저도 아니게 모든게 마무리 되어 마음에 상당히 들지 않는 한 주를 보냈다. 계속해서 시험공부를 끝냈다고 생각했지만, 다시 보면 기억나지 않는 부분이 있었고 우아한테크코스도 이정도면 괜찮지 않을까 했지만 계속해서 마음에 들지 않는 부분이 생겼다. 계속 혼자 해치웠나...? 하다가 아니 이게 뭐야 도대체 하고...이게 인생의 무한참조인가...! 저번 주차와 마찬가지로 기능 목록을 만들고..

장's 개발생각 2022.11.18

[자바] 람다식을 쓰긴 썼는데 뭐하는 건지 모르겠어서 쓰는 정리글

스프링 스터디 프로젝트를 할 때 람다식이라는 개념이 처음 이야기되었다. "람다식을 쓰면 코드가 더 간결하고 쓰기 수월해진다. " 이런 말을 하면서, Comparator를 쓰거나 할 때 람다식을 이용했다. 그런데, 람다식이 무슨 말이고 왜 좋은지는 하나도 생각해본 적이 없다. 그래서 한번 공부할 겸 정리해보려고 한다. 람다식, 람다함수란 익명 함수로써, 함수의 단순화를 위해 사용한다. 익명 함수 => 말 그대로 이름이 없다. 정해진 것이 없어 파라미터로, 변수로 마음대로 사용 가능하다는 이야기들을 접했다. 기본적인 구조는 (연산에 사용할 변수) -> {연산 내용 ;}의 방식으로 사용되며, 단일 실행문이면서 return문이 없을 때에는 중괄호를 없앨 수 있다. 익명함수라는 말을 처음 들어보진 않았다. 자바스..

개발공부/자바 2022.11.14

[개발생각] 우아한테크코스 5기 2주차 숫자야구 후기

이전 게시물은 [개발생각] 5기 1주차 온보딩 후기 를 보시면 됩니다!! https://github.com/JangAJang/WoowaCourse_Preview/tree/main/1주차_숫자%20야구%20게임 GitHub - JangAJang/WoowaCourse_Preview: 우아한 테크코스 문제들을 풀어보며, 더 나은 리펙토링 방법을 연 우아한 테크코스 문제들을 풀어보며, 더 나은 리펙토링 방법을 연구하는 레포지토리입니다. . Contribute to JangAJang/WoowaCourse_Preview development by creating an account on GitHub. github.com 1주차 한지 얼마나 됐다고 벌써 2주차까지 왔다... 간단하게 저번 주차와 비교해서 이번주차에 ..

장's 개발생각 2022.11.10

[JPA] 13. 다대다 매핑(이걸 매핑이라 부를까....?)

데이터베이스와 JPA에서 사용되는 방식이 정말 비슷하다고 생각되는, 몇 안되는 녀석 중 하나다. 데이터베이스의 다대다 매핑은, 이 매핑을 위한 테이블을 하나 구현한다. 이 테이블에 외래키 두개를 만들어 사용했다. JPA에서도 마찬가지다. 다대다로 매핑할 두 객체 사이에 끼어들어갈 객체를 하나 만든다. 이 객체에 양쪽에서 가운데로 다대일 매핑을 하는 것이다. 예를 들어보자면, @Entity @Table(name = "ORDER_ITEM") public class OrderItem { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "ORDER_ITEM_ID") private Long id; @ManyToOne(fetch = FetchT..

[JPA] 12. 일대일 매핑(부제 : 짝짜쿵)

일 대 일, 즉 한명과 다른 한명이 짝을 꼭 맺는다는 뜻이다. 만약 연인이 있는 사람이 다른 사람과 짝을 맺을 수 있지만? (물론 있을 수 있겠지만) 짝을 맺어서는 안되는 것이다. 일대일 매핑은 일종의 연인과 같다. 이 연관관계는 유니크해야한다. 즉, 한 사람이 다른 두 사람과 연관관계에 얽혀서는 안되는 것이다. 일대일 매핑은 외래키에 데이터베이스의 유니크 제약조건이 추가된다. 한쪽이 외래키를 가지면 다른 쪽은 읽기 전용으로 @OneToOne(mappedBy = "매핑 변수명")을 해주어야 한다. 사실 여기까지는 단순하다. 코드로서도, 개념 자체도 쉬운 편이다. 어려운 부분을 이제 건드려 보자면, 연관관계의 주인이다. 일대일 매핑의 조건들은 너무 쉽지만 연관관계의 주인을 누가 할 것이냐가 문제이다. (연..