분류 전체보기 37

[GDG Campus Korea] Whatever You Make 2주차 회고록

이번주는 좋은 것과 나쁜 것이 무엇이 있었나요? 명확한 기획이 나와서 기뻤습니다. 마라톤 회의를 거쳐서 나온 결론이라 더 기쁜 마음이 컸습니다. 팀원들과도 더 친해진 것 같아서 좋습니다. 😘 이번주도 마찬가지로 컨디션 관리가 아쉬웠습니다. 할 일이 많아지면서 조금 힘들었지 않았나 합니다. 잘 조절해보려고 하지만 쉽게 되지는 않는 것 같습니다. 제 컨디션이 혹시 회의 때 저의 태도로 나타났을까 하는 걱정과 반성의 마음이 들었습니다. 이번주 진행했던 학습/개발 내용은 무엇이었나요? 기획을 확정했습니다. 타겟이 명확해졌습니다. custom exception을 공부하고 작성했습니다. 백엔드 개발자분과 함께 ERD를 작성하고 API 명세서를 수정하여 클라이언트 분들과 공유했습니다. 가장 고민을 했던 부분은 무엇이..

티미 2023.09.10

[GDG Campus Korea] Whatever You Make 1주차 회고록

이번주는 좋은 것과 나쁜 것이 무엇이 있었나요? 날씨가 선선해져서 기분이 좋았습니다. 온라인 회의를 자주 진행했는데 힘들긴 했어도 진행되는 사항이 보여 좋았습니다. 컨디션 관리가 힘들었던 점은 아쉬웠습니다. 이번주 진행했던 학습/개발 내용은 무엇이었나요? 이번주는 프로젝트 기본 세팅 및 협업하는 개발자 분과 룰을 정했습니다. 아직 본격적인 개발은 시작하지 않았습니다. 일주일간 밀도있게 기획 단계를 거쳤는데 생각보다 서로의 의견이 달라서 소통하는 것이 좀 어려웠습니다. 제 생각보다 디테일하게 기획해야 한다는 것을 매일매일 깨닫는 시간이었습니다. 가장 고민을 했던 부분은 무엇이었나요? 로그인 부분을 고민했습니다. 아직 개념이 부족하여 디바이스 로그인 방식에 대해서 찾아보는 시간을 가졌습니다. 아쉬운 부분을 ..

티미 2023.09.02

동일성 vs 동등성

본 게시물은 프로그래머스 FOO님의 실무 자바 개발을 위한 OOP와 핵심 디자인 패턴을 듣고 작성된 게시물입니다. 📣 동일성과 동등성 동일성 : 비교 대상이 실제로 똑같은 대상이어야 함(== 연산자 사용) 동등성 : 비교 대상이 같은 값이라고 우리가 정의한 것(equals() 오버라이딩) 동일한 인스턴스는 동등하다. public class SomeObject { private int intField; private String stringField; public SomeObject(int intField, String stringField) { this.intField = intField; this.stringField = stringField; } public int getIntField() { ret..

java 2023.08.17

[JPA] @NotNull vs nullable = false

🎈 @NotNull vs nullable = false 은 무슨 차이가 있나? 유효성 검사를 프로젝트에 추가하려다가 코드를 보니, @Column(nullable = false, length = 20, name = "name") private String name; 위의 코드를 발견했다. @Column 어노테이션의 nullable 속성이 false로 되어있다. 프로젝트를 실행하면 이렇게 not null의 조건이 붙은채 테이블이 생성된다. 해당 필드를 @NotNull을 붙여서 변경해보자 @NotNull private String name; @PostMapping("/user") public void saveUser(@Valid @RequestBody UserCreateRequest request) { use..

springboot 2023.08.13

error-[errno: 150] "foreign key constraint is incorrectly formed"

상황 : mariaDB를 사용하여 테이블 구축. JPA의 연관관계에서 외래키 에러 발생 해결 : @Column(name = "user_id") 작성 @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "user_id") private Long id; } @JoinColumn(name = "user_id") @ManyToOne private User user; @GeneratedValue(strategy = GenerationType.AUTO) 어노테이션과 함께 @Id 어노테이션만 사용하여 엔티티의 기본 키를 지정하는 경우, user 테이블의 기본 키 컬럼 이름은 "id"가 된다. 그러나 ..

springboot 2023.08.06

stream API + Optional

본 게시물은 프로그래머스 FOO님의 실무 자바 개발을 위한 OOP와 핵심 디자인 패턴을 듣고 작성된 게시물입니다. stream API와 Optional을 같이 쓸 수 있다. list.stream().filter(user -> user.sameId(inputId)) .findAny() // optional 반환 메소드 .ifPresentOrElse( user -> { throw new RuntimeException(inputId + " 이미 존재하는 아이디입니다."); }, () ->{ System.out.println(inputId + " 사용 가능한 아이디입니다."); }); findAny() 메소드가 optional을 반환하는 메소드이다.

java 2023.07.15

stream API

본 게시물은 프로그래머스 FOO님의 실무 자바 개발을 위한 OOP와 핵심 디자인 패턴을 듣고 작성된 게시물입니다. 🌈 stream API Java 8부터 도입된 기능으로, 컬렉션 데이터를 다루는데 강력한 도구이다. for, if문을 대체할 수 있는 문법을 제공한다. stream API는 Collection 인터페이스 내에 존재하는 메서드로, Collection 인터페이스를 구현하는 구현체에서 사용이 가능하다. stream() 메서드를 호출하면 stream API 호출이 가능하다! forEach for문을 대체하는 반복을 위한 메서드 List integerList = new ArrayList(); integerList.add(10); integerList.add(20); integerList.add(30)..

java 2023.07.10

람다식

🏹 람다식 프로그래밍 언어에서 사용되는 개념으로 '익명 함수'(이름이 없는 함수)를 지칭 자바에서는 Java 8부터 기능이 포함되었다. (매개변수) -> {함수 구현} 위와 같이 화살표(->)를 이용해서 표현한다. 왜 쓰나? 람다식을 사용하는 이유는 몇 가지 있는데 1. 라인 수 감소 2. 함수의 의도가 명확하게 읽힘 3. 람다식으로 바로 실행문을 전달할 수 있음 4. 병렬 프로그래밍 가능 그런데 역시 좋기만 한 것은 아니다. 재사용이 불가하며 남발하게 되면 가독성이 떨어진다. 함수형 인터페이스 함수형 인터페이스가 갑자기 등장했는데 알아보니 추상 메서드를 한 개만 가지는 인터페이스를 뜻한다고 한다. 람다식이랑 무슨 연관이냐면 => 자바의 람다식은 함수형 인터페이스로만 사용이 가능하다. @Functiona..

java 2023.07.09

Optional

본 게시물은 프로그래머스 FOO님의 실무 자바 개발을 위한 OOP와 핵심 디자인 패턴을 듣고 작성된 게시물입니다. 💡 Optional Java8에서 제공하는 문법으로 NPE를 가독성 좋게 처리해준다. Optional을 사용하는 이유는 API 호출을 유창하게(fluent) 할 수 있기 때문이다. 자바의 Null Null은 참조할 주소 값이 없는 것을 의미한다. 자바에서 null을 참조하는 오브젝트의 메서드를호출하게 되면 NPE가 발생한다. 하지만 메서드가 static 이라면 예외가 발생하지 않고 정상 실행된다. null을 참조하는 레퍼런스 변수로 객체의 인스턴스 메서드를 호출할 때 발생하는 예외 NPE(NullPointerException)이 있다. public class NullMain { public ..

java 2023.07.09