소개
저는 자바, 스프링 기반의 백엔드 개발이 주무기인 3년차 개발자입니다. 신규 서비스의 요구사항을 분석해서 데이터베이스 테이블을 직접 설계하고, 백엔드 애플리케이션을 처음부터 구성하고 배포한 경험이 있습니다. 프로젝트를 진행할 때마다 만났던 다양한 문제들을 자바, 스프링을 학습하며 얻은 지식으로 해결한 경험이 많습니다. 그리고 필요하다면 다른 기술들을 학습하는 것도 마다하지 않습니다.
좋은 서비스를 만들기 위해서는 개발자의 역량이 기초가 된다고 생각합니다. 그래서 좋은 코드에 대하여 끊임없이 학습하고, 고민합니다. 저는 학습한 것을 다른 사람과 공유하는 일에 보람을 느낍니다. 제가 학습한 내용을 동료 개발자들과 공유하는 노력을 통해, 동료들도 함께 성장하는 개발 문화를 만들고자 노력합니다. 이러한 노력을 지속하다 보니 동료 개발자들이 제가 공유한 코드를 사용하다가, 회사 프로젝트의 코딩 컨벤션으로 제 코딩 스타일을 채택해 사용하기도 했습니다.
게시글
질문&답변
2024.05.21
코드작성법
안녕하세요. 인프런재밌다님, 공식 서포터즈 y2gcoder입니다. String str1 = "문자열"; boolean result1 = "문자열".equals(str1); // 1 boolean result1 = str1.equals("문자열"); // 2 어떤 코드가 더 효율적인가요? 저는 해당 케이스에서는 보통 1번으로 많이 하는 것 같습니다. 제시해준 예시와 같이 str 변수가 null이 아니고 문자열이 확실할 때는 1번, 2번 모두 상관없습니다. 하지만 보통 메서드의 파라미터로 들어온 문자열을 가지고 비교할 때라면, 해당 파라미터가 str1이라면 str1이 null로 들어올 수 있습니다. 만약 str1이 null일 때 boolean result1 = str1.equals("문자열");//2 와 같이 하면 NullPointerException 이 발생하게 됩니다. 그래서 보통 Null이 아닐 가능성이 더 높거나 문자열 리터럴에서 메서드를 호출하는 것을 선호합니다 (사진) 감사합니다.
- 0
- 1
- 18
질문&답변
2024.05.20
QuerryDSL은 JPA기술에서만 적용이 가능한가요? + 여러가지 질문이 있습니다.
안녕하세요. 양치잘하기님, 공식 서포터즈 y2gcoder입니다. JPA소개2 강의에서 여러 프로젝트의 DB관련 기술을 보면 QueryDSL을 사용한다고 설명해주셨는데 이전 다른 기술 강의에서도 queryDSL은 동적쿼리를 자동으로 생성해준다 라고 들었습니다. 마이바티스나 jdbc템플릿에서는 queryDSL을 사용하지 못하는건가요? => JdbcTemplate과 함께 사용가능한 것으로 알고 있습니다. 실제로 QueryDSL 홈페이지(클릭) 을 가보시면 JPA, JDBC 뿐만 아니라 Mongo DB 에 대해서도 지원한다고 나와있습니다 (사진) (사진) 다만 JPA를 제외하고는 설정 방법에 대해서는 검색이 필요하실 것으로 생각됩니다! Mybatis 자체를 QueryDSL로 변환해주는 것에 대해서는 아마도 없는 것으로 보입니다. 참고로 JDBC 와 같이 사용할 때는 JPAQueryFactory 가 아닌 SQLQueryFactory 를 사용하시면 됩니다 (사진) 그리고 프로젝트를 해보려고 하는데 jpa는 내용이 많은것 같아 MyBatis를 먼저 사용해서 프로젝트를 진행하고 추후에 영한님의 다른jpa강의 로드맵을 수강하면서 프로젝트를 수정해볼려고 생각중입니다. 그것과 관련된 질문으로 섹션8부터 있는 내용들을 일단 건너뛴 후 프로젝트를 진행하고 나서 나머지 섹션을 수강하고 로드맵의 스프링 로드맵의 핵심원리 고급편과 핵심원리 활용을 수강하여도 학습에 무리가 없을까요? 아니면 섹션 8내용은 일단 건너뛴 후 핵심원리 활용과 고급편을 수강은 일단 하는게 좋은가요? => 프로젝트 시작 전에 고민이 많으신 것으로 보입니다! 개인적으로는 DB 2편의 데이터 접근 기술은 다 맛보기와 같은 느낌이라 학습 내용이 비교적 적은 점, 9, 10, 11강이 중요한 내용인데 JPA로 세팅하기 때문에 눈에 익숙한 게 좋은 점을 이유로 들어 DB2편을 순서대로 전부 학습하시는 것을 추천합니다 (사진) 그리고 나서 핵심원리 기본편은 듣지 않으셨다면 꼭 수강하시고 스프링 부트나 핵심원리 고급편은 개인적으로는 난이도가 어려운 내용들이 많고, 프로젝트를 진행하시다 보면 필요성을 느끼실 내용이 많기 때문에 후순위로 미루셔도 괜찮을 것 같습니다! 일단 프로젝트를 만들기로 하셨으면 DB2편(, 핵심원리 기본편)을 끝내시는대로 한번 만들어보시는 것을 강력 추천합니다! 감사합니다.
- 0
- 1
- 28
질문&답변
2024.05.20
JpaItemRepositoryV2 질문 있습니다.
안녕하세요. 양치잘하기님, 공식 서포터즈 y2gcoder입니다. 제가 질문을 잘 이해한 것인지 모르겠습니다. (사진) JpaRepository 를 상속한 SpringDataJpaItemRepository는 런타임 시(스프링 애플리케이션 구동 시) Spring Boot 와 Spring Data JPA가 해당 인터페이스 스펙(부모인 JpaRepository 포함)을 보고 자동으로 구현체를 만들어 스프링 빈으로 등록합니다. 그러면 JpaItemRepositoryV2 도 빈으로 등록될 때 SpringDataJpaItemRepository의 구현체를 의존관계 주입받습니다. 인터페이스 타입으로 되어있지만 실제로 생성자를 통해 주입받은 인스턴스는 구현체이기 때문에, 저희는 기능을 사용할 수 있습니다. 의존관계의 주입에 대해서는 스프링 핵심 원리 - 기본편 을 복습해보시는 것을 추천합니다. JPA가 자동으로 만들어주기 때문에 다소 혼동이 오실 수는 있으나, 기본적인 원리 자체는 저희가 인터페이스를 만들고 인터페이스를 구현한 인스턴스를 빈으로 등록하는 것과 결코 다르지 않습니다. 인터페이스 타입에 의존받고 있으나 자바는 (인터페이스의 default 메서드를 제외하고) 기본적으로 인터페이스 구현체가 실제로 일하는 것입니다. 자바 기본편에서도 저희는 인터페이스를 구현한 구현체가 실제로 동작했던 것을 떠올려보시면 좋으실 것 같습니다. Spring, Spring Data JPA 등도 결국 Java로 만들어져 있습니다 (사진) 감사합니다.
- 0
- 2
- 30
질문&답변
2024.05.17
빌드 에러
안녕하세요. 이우연님, 공식 서포터즈 y2gcoder입니다. gradlew 가 있는 위치에서 실행하셔야 합니다! D:₩down₩study₩hello-spring₩hello-spring 에 gradlew 이 있을 것이라 예상되는데, 한번 거기서 시도해보시겠습니까? 감사합니다.
- 0
- 1
- 46
질문&답변
2024.05.17
섹션 9. 문제와 풀이1
안녕하세요. 권정익님, 공식 서포터즈 y2gcoder입니다. 간단하게 생각해보면 Map map 에서 map.get(key); 의 반환값을 Object 입니다. Object를 Integer로 다운 캐스팅을 해주셔야 오토박싱을 통한 숫자 간의 연산을 지원할 수 있습니다 (사진) 감사합니다.
- 0
- 1
- 45