inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

컴포넌트별 베리어블 구축

미해결

[UI3 업데이트] 피그마 배리어블을 활용한 디자인 시스템 구축하기

해당 강의를 듣고 실무에 적용을 해보려고 하고있는데, 진행할수록 단순히 color/bg/interacitve/primary 와 같은 버튼과 체크박스 등 다양한 곳에 적용할 수 있는 통합(?) 배리어블보다는 color/FAB/bg/primary 와 같이 특정 컴포넌트를 위한 배리어블로 세분화를 해야할까? 하는 생각이 종종 들게됩니다 예를들어, 일반 CTA버튼(파란색)에서는 color/bg/interacitve/primary와 같은 범용 배리어블을 적용했을 때 문제가 없지만, 세그먼트 버튼같은 회색 박스 안에 있는 흰색 버튼에는 해당 배리어블을 활용할 수가 없겠는데..? 하는 생각이 들면서요. 그래서 결국 디자인 라이브러리가 발전하고 배리어블이 성숙해 나가면서부터는 컴포넌트별로 배리어블이 다양해지겠다는 생각이 드는데 이에 대해서 어떻게 생각하시는지, 필연적이라고 생각하시는지, 주의할 부분은 없을지 궁금합니다...!

  • 웹-디자인
  • figma
  • figma-tokens
  • 디자인-시스템
  • 아토믹-디자인
  • figma-variable
  • 프로덕트디자인
허이짜 댓글 2 좋아요 0 조회수 136

인풋 텍스트필드에서는 왜 'interactive/bg' 배리어블을 활용하지 않는 것인가요?

미해결

[UI3 업데이트] 피그마 배리어블을 활용한 디자인 시스템 구축하기

버튼과 같이 '클릭' 액션이 있는 인터랙티브한 부분에는 bg/interactive 그룹에 있는 컬러를 사용하는 것으로 이해하고있는데 Text field의 bg는 그냥 일반형 컬러를 사용하는 것으로 보입니다. 강의상에서 빠른 제작을 위해 시적 허용...? 을 하신 것이죠? 실제 현업에서 사용할때는 interactive 컬러와 일반 컬러를 구분해서 사용해줘야할 것 같다는 생각이 드는데, 이것은 제 일차적인 생각이고 interactive라는 그룹을 색상 자체가 변동되는 (Hover, Press 액션이 있는) 컬러들의 그룹이라고 가정하면, 해당 텍스트 필드에서는 배경의 변화가 없으니 interactive가 아닌 컬러그룹을 사용하신 것인가? 라는 생각도 듭니다. 물론 정답은 없겠고, 사용하려는 방향과 정책에 따라 다들 다르겠지만 강의에서는 어떤 의도로 사용하셨는지가 궁금합니다

  • 웹-디자인
  • figma
  • figma-tokens
  • 디자인-시스템
  • 아토믹-디자인
  • figma-variable
  • 프로덕트디자인
허이짜 댓글 1 좋아요 0 조회수 65

17강 4~5분대 테이블 값 조회가 안됩니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

package hellojpa; public enum RoleType { GUEST, USER, ADMIN } <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2.2.xsd"> <persistence-unit name="hello"> <properties> <!-- 필수 속성 --> <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/> <property name="javax.persistence.jdbc.user" value="sa"/> <property name="javax.persistence.jdbc.password" value="1234"/> <property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> <!-- 옵션 --> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> <property name="hibernate.jdbc.batch_size" value="10"/> <property name="hibernate.hbm2ddl.auto" value="none" /> </properties> </persistence-unit> </persistence> package hellojpa; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { Member member = new Member(); member.setUsername("C"); em.persist(member); tx.commit(); } catch (Exception e) { tx.rollback(); } finally { em.close(); } emf.close(); } } package hellojpa; import javax.persistence.*; @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name", nullable = false) private String username; public Member() { } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } } 이런 식으로 테이블 값에 아무것도 나타나지 않는데 이게 정상인건가요?

  • java
  • jpa
lgh8079 댓글 2 좋아요 0 조회수 129

part6. 구름의 개수 풀이 시간초과 이유

미해결

2026 코딩테스트 올인원 [JAVA]

part6 구름의개수1 문제 풀다 질문 드립니다. 아래는 제가 bfs로 푼 코드인데요. 케이스는 통과하는데 시간초과가 납니다. bfs() 매개변수로 int[] start 를 받아서 아래에서 사용했는데, 하위 for문에서 int[] sub 로 배열을 만들어 쓴게 문제인가 싶은데, 이런 일차원 배열 더 쓴다고 시간복잡도가 높아지나? 싶은 생각이 들어 시간 초과 왜나는지 궁금합니다. public static int solution(int[][] sky) { boolean[][] visited = new boolean[sky.length][sky[0].length]; int count = 0; for(int i=0; i<sky.length; i++) { for(int j=0; j<sky[0].length; j++) { if(!visited[i][j] && (sky[i][j] == 1)) { bfs(sky, new int[]{i,j}, visited); count++; } } } return count; } public static void bfs(int[][] sky, int[] start, boolean[][] visited) { Queue<int[]> q = new ArrayDeque<>(); q.offer(start); visited[start[0]][start[1]] = true; while(!q.isEmpty()) { int[] cur = q.poll(); System.out.println("start: " + start[0] + start[1] + "/ poll: " + cur[0] + ", " + cur[1]); // cur의 상하좌우 중 갈 수 있는 길 & visited 안한 길을 q에 넣기 int[] r = {-1, 1, 0, 0}; int[] c = {0, 0, -1, 1}; int w = sky[0].length; int h = sky.length; for(int i=0; i<r.length; i++) { int[] sub = new int[]{cur[0]+r[i], cur[1]+c[i]}; System.out.println("sub:" + sub[0] + ","+sub[1]); if((sub[0] >= 0 && sub[0] < h && sub[1] >= 0 && sub[1] < w) && (sky[sub[0]][sub[1]] != 0) && (!visited[sub[0]][sub[1]])) { q.offer(sub); visited[sub[0]][sub[1]] = true; System.out.println("sub offer:" + sub[0] + ","+sub[1]); } } } }

  • java
  • 코딩-테스트
  • 알고리즘
  • data-structure
송유진 댓글 2 좋아요 0 조회수 103

DFS vs BFS 중 BFS 추천해주신 것 관련 질문

미해결

2026 코딩테스트 올인원 [JAVA]

안녕하세요! [part6.구름의 개수1] 강의에서 DFS vs BFS 중 DFS 사용하면 스택오버플로우 가능성이 있어서 대안을 말씀 해주셨는데요. 암시적그래프에서 구현 시에 해당하는건지, 다른 케이스에서도 그러한지 궁금합니다. 암시적그래프에서 모두 1인 경우 재귀가 많이 호출되어서 그게 문제인거같은데, 다른 유형에서는 그런 경우가 없을까요?

  • java
  • 코딩-테스트
  • 알고리즘
  • data-structure
송유진 댓글 2 좋아요 1 조회수 99

array 문제풀이 2번 질문입니다.

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요 질문을 보면 사용자에게 정수를 받는 다는 전제일 때, 입력값이 12345 이면 1,2,3,4,5으로 나오지만 34567 로 정수값을 입력하면 출력값이 3,4,567 로 나오는데 도저히 해답이 생각 안나서요ㅠ 어떻게 코드를 수정해야 다른 정수들을 넣어도 4,5,6,7,8 <<이런식으로 나올 수 있을까요?

  • java
  • 객체지향
댓글 1 좋아요 0 조회수 82

JAVA입문 / 메서드편 문제와 풀이2

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

public class MethodEx4 { public static void main(String[] args) { // Question /* 은행 계좌 입출금 - 사용자로부터 계속 입력을 받아 입금와 출금을 반복 수행하는 프로그램을 작성하자. - 또한 간단한 메뉴를 표시하여 어떤 동작을 수행해야 할지 선택할 수 있게 하자. - 출금시 잔액이 부족하다면 "x원을 출금하려 했으나 잔액이 부족합니다."라고 출력해야 한다. */ // Answer Scanner sc = new Scanner(System.in); int balance = 0; while (true) { printMenu(); int option = sc.nextInt(); balance = menuExecute(sc, balance, option); if (option == 4) { break; } } } public static void printMenu() { System.out.println("----------------------------------------"); System.out.println("1. 입금 | 2. 출금 | 3. 잔액 확인 | 4. 종료"); System.out.println("----------------------------------------"); System.out.print("선택: "); } public static int menuExecute(Scanner sc, int balance, int option) { int amount; if (option == 1) { System.out.print("입금액을 입력하세요: "); amount = sc.nextInt(); balance += amount; System.out.println(amount + "원을 입금하였습니다. 현재 잔액: " + balance); } else if (option == 2) { System.out.print("출금액을 입력하세요: "); amount = sc.nextInt(); if (balance >= amount) { balance -= amount; System.out.println(amount + "원을 입금하였습니다. 현재 잔액: " + balance); } else { System.out.println(amount + "원을 출금하려 했으나 잔액이 부족합니다."); } } else if (option == 3) { System.out.println("현재 잔액: " + balance); } else if (option == 4) { System.out.println("시스템을 종료합니다."); return balance; } else { System.out.println("메뉴를 잘못 선택하셨습니다."); } return balance; } } 은행 계좌 입출금 문제를 이런 식으로 풀이했습니다. 강사님과 결과는 같지만, 혹시 좋지 않은 코딩인지 궁금합니다.

  • java
  • 객체지향
재앙 댓글 1 좋아요 0 조회수 82

무한 스크롤 방식에서 페이지 번호 방식 쿼리의 문제점 의문

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

안녕하세요, 무한 스크롤 방식에서 페이지 번호 방식 쿼리의 문제점을 설명한 부분에 질문이 있습니다. 페이지 방식을 무한 스크롤 방식에 적용 시 문제점으로 아래 2가지를 제시하셨는데요, 1) 페이지가 추가된 경우, 데이터 중복 조회 문제 2) 페이지가 삭제된 경우, 데이터 누락 문제 궁금한 점은, 이러한 문제는 무한 스크롤에서 사용했을 때 뿐 아니라, 페이지 번호 방식을 사용할 때도 마찬가지로 문제가 있는 것 아닌가 싶다는 것입니다. 페이지 번호 방식 자체의 한계라고 생각하는데, 페이지 번호 방식에서는 발생하지 않는 문제인가요?

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
최재량 댓글 2 좋아요 1 조회수 101

싱글톤과 스프링

미해결

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)

안녕하세요. 싱글톤 관련 질문 드립니다. 특정한 의문점에 대한 질문은 아니고요. 스프링 컨테이너는 핸들러나 서비스 빈을 싱글톤으로 관리하게 되는데, 혹시 강의에서 등장한 자바와 코틀린의 싱글톤 사용 방식의 차이에 의해 발생하는 스프링 싱글톤 관련된 이슈가 있는지 궁금합니다. 싱글톤 관리는 언어와 관계없이 스프링 컨테이너가 맡게 되니 별 상관이 없을 것으로 예상되긴 합니다만.. 혹시 싶어 질문 드립니다. 감사합니다.

  • java
  • kotlin
  • 객체지향
akakakakak 댓글 2 좋아요 0 조회수 97

equals의 재정의(overriding)에 대해서

해결됨

기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM

먼저, 이렇게 양질의 강의 올려주셔서 정말 감사드립니다. 잘 듣고 있습니다. 49강의 실습에서 equals 메소드를 재정의한다고 말씀하셨습니다. 그런데, MyString 은 Object 로부터 equals(Object) 를 상속 받았고, 강의에서 보여주신 코드에서는 equals(MySring) 을 정의했으므로, 메소드 시그니처가 달라 재정의(overriding)보다는 overloading이 더 적절한 표현이 아닌가 싶어서 질문드립니다. 실제로 인텔리제이에서 equals(MyString) 에 @Override 어노테이션을 붙이려하면 아래의 사진과 같은 오류가 발생합니다. 아니면 제가 재정의에 대해서 오해하고 있는 부분이 있는걸까요?

  • java
  • 객체지향
  • jvm
  • data-structure
IIIllIllII 댓글 2 좋아요 0 조회수 126

TestEx 객체 생성 시 생성자 호출 질문

해결됨

기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM

안녕하세요. 강의를 듣던 중 생성자 호출 결과와 관련해 궁금한 점이 생겨 질문드립니다. 해당 예제에서 new 연산자 사용 시 다중 정의된 int 타입 파라미터를 받는 생성자가 호출된다고 설명해 주셨는데, 그 이유가 궁금합니다. new 연산자에 int 타입 매개변수를 전달한 상황을 가정하고 설명하신 것일까요? 강의와 유튜브 항상 잘 보고 있습니다. 감사합니 다.

  • java
  • 객체지향
  • jvm
  • data-structure
cola1886 댓글 2 좋아요 0 조회수 101

응시권 재발송해주시길 바랍니다.

미해결

개발 역량 + 자격증까지, Java로 PCCP 자격증 준비하기

응시권이 확인되지 않습니다. 재발송해주시길 바랍니다.

  • java
  • 코딩-테스트
  • 알고리즘
  • data-structure
조홍식 댓글 1 좋아요 0 조회수 72

구조체포인터

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

1:20초에서맨아래두번째줄 curr->next=head 가아니고 prev->next =head 가. 아닌가요?

  • python
  • java
  • c
  • 정보처리기사
고은채 댓글 2 좋아요 0 조회수 66

섹션 6 / 29.Button 강의의 아이콘 인스턴스 스왑 질문

미해결

[UI3 업데이트] 피그마 배리어블을 활용한 디자인 시스템 구축하기

안녕하세요 강의를 수강하고있는 수강생이자 스타트업 외주제작사의 디자인시스템을 구축중인 인턴입니다. 29번 강의에서 강사님께서 공유해주신 아이콘 Union파일을 다운로드 받아 버튼 제작 중이나, 등록한 버튼의 아이콘 인스턴스 스왑의 컬러부분이 컴포넌트 색상과 연동되지않는 문제로 문의드립니다. 문제상황: 버튼 컴포넌트를 제작하여 1) → Leading Icon인스턴스 스왑을 등록 2) Select preferred values (+버튼)을 통해 다른 아이콘을 등록 3) 가져온 Union Icon 원본 파일에 제가 제작한 베리어블(Primitive 컬렉션)의 색상을 적용하여 4) 제작한 버튼 컴포넌트의 아이콘 역시 Union 아이콘과 일치하는 베리어블(Primitive 컬렉션)를 설정해준뒤, 버튼 컴포넌트와 어울리는 베리어블(Semantic 컬렉션)컬러로 변경하여 베리언츠를 Alt를 활용해 인스턴스를 뽑았습니다. 5) 등록한 프로퍼티의 → Leading Icon에서 다른 아이콘으로 변경 시 컴포넌트에 등록된 컬러와 동일한 컬러가 아닌 3번에서 적용된 베리어블 색상이 적용되어 출력됩니다. 유사 질문의 답변으로 문제가 1. 아이콘 레이어 이름이 반드시 동일해야한다. 2. 아이콘 형태가 반드시 동일해야한다. 라고 확인했는데, 아이콘 레이어 이름은 반드시 동일함을 이해하고 확인했으나 이상없습니다만, 아이콘 형태가 반드시 동일해야한다는 말이 이해되지않습니다. 예로, 제가 강사님께서 공유해주신 Icon 컴포넌트 중 Shape 아이콘을 복사하여 버튼 제작을 위해 사이즈를 16x16px로 조정하여 버튼 컴포넌트를 제작한 경우 2번째 상황으로 인하여 컬러 연동이 안되는 건지 궁금합니다.

  • figma
  • figma-tokens
  • 디자인-시스템
  • figma-variable
  • 프로덕트디자인
  • figma-인스턴스_스왑
  • 베리언츠-인스턴스
이지미 댓글 2 좋아요 0 조회수 76

get() = 3

미해결

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)

안녕하세요. 상속과 별로 연관된 질문은 아닌 듯 하지만 강의에서 나온 부분에 궁금증이 생겨 질문 남깁니다. val swimAbility: Int get() = 3 이라는 예제 코드를 작성하셨는데요. 코틀린은 어차피 필드를 선언하면 게터, 세터를 만들어주고 필드 선언 시 디폴트 값도 지정해줄 수 있는데 그렇다면 위와 같은 형태의 커스텀 게터는 굳이 구현할 필요 없는 것 아닌가? 하는 생각이 듭니다. 그냥 초기값 3을 갖는 필드를 선언하기만 하면 게터까지 알아서 만들어질 테니까요. 그냥 인터페이스의 게터 상속 의도를 표현하기 위해 별 의미나 실 용례는 없는 코드를 작성하신 거라고 봐도 될지? 아니면 저런 방식의 커스텀 게터에 제가 이해하지 못하는 어떤 의미가 있는 것일지가 궁금합니다. 감사합니다. ㅇ

  • java
  • kotlin
  • 객체지향
akakakakak 댓글 2 좋아요 0 조회수 82

15강. updateUser() 질문

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

@PutMapping("/user") public void updateUser(@RequestBody UserUpdateRequest request){ String readSql = "select * from user where id=?"; String sql = "update user set name=? where id=?"; jdbcTemplate.update(sql, request.getName(), request.getId()); } 웹페이지에서 update를 발생시켜서 put 요청이 올라 왔을때 UserUpdateRequest dto에 id와 name이 들어 간다는건 웹에서 요청이 올라왔을때 json에 이미 해당 name에 대한 id 정보가 있다는 거죠? id는 db에서 자동적으로 생성해 준다고 했었는데, 이 id를 웹에서는 어떻게 알고 있나요?

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
김동현 댓글 2 좋아요 0 조회수 74

UI Kit에서 배리어블 등록 안되는 문제

미해결

[UI3 업데이트] 피그마 배리어블을 활용한 디자인 시스템 구축하기

안녕하세요, 볼드님. 25강. 컴포넌트 만들기 전 라이브러리 세팅하기 에서 UI Kit 컬러 라이브러리 창에서 보면 저는 볼드님과 다르게 color/text/tertiary가 뜨지 않아요. 또한 color/bg/primary, .Companent/Promary도 뜨지 않습니다. 플러그인에서 Apply variables도 0 variables applied라고 아무 것도 적용되지 않았다고 뜨네요.. 어느 단계에서 잘못된 걸까요?

  • 웹-디자인
  • figma
  • figma-tokens
  • 디자인-시스템
  • 아토믹-디자인
  • figma-variable
  • 프로덕트디자인
김연진 댓글 2 좋아요 0 조회수 93

이벤트 참가자 수 증가 후, save 메서드 호출 코드 질문

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 4-8강 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? chapter4/_2_event_with_participant 폴더의 EventJoinService 객체의 메서드 코드에 대한 질문입니다. 코드의 어떤 로직이 이해가 안 되시나요? @Transactional public void joinEvent(Long eventId, Long memberId) { Event event = eventRepository.findById(eventId) .orElseThrow(() -> new EntityNotFoundException("이벤트를 찾을 수 없습니다.")); Member member = memberRepository.findById(memberId) .orElseThrow(() -> new EntityNotFoundException("회원을 찾을 수 없습니다.")); // save()를 호출하지 않아도 Dirty Checking에 의해 Update 쿼리가 나가지 않나요? event.increaseParticipants(); eventRepository.save(event); EventParticipant participant = EventParticipant.builder() .event(event) .member(member) .build(); participantRepository.save(participant); } } 코드 블럭의 주석 란에 질문을 적어놓았습니다. 저 상황에서 save() 를 호출하는 이유가 궁금합니다. JPA 엔티티의 상태 변경분에 대한 쿼리는 트랜잭션 커밋 후, 자동으로 나가는 것으로 알고 있습니다. 혹시, 제가 잘못 알고 있는건지 궁금합니다.

  • java
  • spring
  • mysql
  • redis
  • 이력서
cho766 댓글 2 좋아요 0 조회수 84

Repository Adapter 설계에 대해 피드백을 부탁드립니다

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

안녕하세요 토비님!! 강의를 완강하고 제 프로젝트를 리팩토링하면서 피드백받고싶은점이 생겨 질문글을 올립니다. Repository Port를 기술에 종속시키지 않기 위해 Adapter에서 JPA, MyBatis, QueryDSL을 조합하는 구조를 선택했는데, 이 설계 방향이 적절한지 조언을 구하고 싶습니다. 현재 구조 core/ └── domain/ └── application/ └── required/ ← Port 인터페이스 └── ~Repository adapter/ └── persistence/ ├── ~RepositoryAdapter ← Port 구현체 ├── ~JpaRepository ← Spring Data JPA └── ~MybatisMapper ← Mybatis 매퍼 인터페이스 의존 관계 [Service] → [Repository] ←impl― [RepositoryAdapter] → [JpaRepository] → [MybatisMapper] → [JPAQueryFactory] (core) (core) (adapter) (adapter) 예시 @Repository @RequiredArgsConstructor public class ItemRepositoryAdapter implements ItemRepository { private final ItemJpaRepository itemJpaRepository; private final ItemMybatisMapper itemMybatisMapper; @Override public List<Item> findBySearchRequest(ItemSearchRequest request) { return itemMybatisMapper.findBySearchRequest(request) .stream() .map(Item::from) .toList(); } @Override public List<Item> saveAll(List<Item> items) { return itemJpaRepository.saveAll(items); } } @Repository @RequiredArgsConstructor public class AuctionRepositoryAdapter implements AuctionRepository { private final JPAQueryFactory jpaQueryFactory; private final AuctionJpaRepository auctionJpaRepository; @Override public void deleteAllByRegionAndRealmId(RegionType region, Long realmId) { QAuction qAuction = QAuction.auction; BooleanBuilder filter = new BooleanBuilder(); filter.and(qAuction.region.eq(region)); if (realmId == null) { filter.and(qAuction.realmId.isNull()); } else { filter.and(qAuction.realmId.eq(realmId)); } jpaQueryFactory.delete(qAuction) .where(filter) .execute(); } @Override public int saveAll(List<Auction> auctions) { if (auctions.isEmpty()) return 0; return auctionJpaRepository.saveAll(auctions).size(); } } 이 구조를 선택한 이유 동적 쿼리, 벌크 연산 등 JPA만으로 해결하기 어려운 케이스가 있어 MyBatis와 QueryDSL을 병행 사용하고 있습니다. 일반적인 방식인 Port 인터페이스가 Spring Data JPA Repository를 상속하는 구조를 채택하지 않은 이유: MyBatis나 QueryDSL 기반 구현체를 만들 수 없음 CustomRepository 인터페이스를 별도로 만들어야 하는 복잡도 증가 현재 방식의 장점: Port 인터페이스가 순수 Java 인터페이스로 유지됨 RepositoryAdapter에서 상황에 맞는 기술을 자유롭게 조합 가능 추가 인터페이스 없이 단순한 구조 유지 저는 현재 구조가 의존 관계도 외부에서 내부로 향하고 테스트도 쉬워서 괜찮다고 생각하는데 토비님의 생각도 듣고싶습니다!! 좋은 강의 감사합니다!!

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
Reverie 댓글 2 좋아요 0 조회수 139

교육용 피그마 계정 문의

미해결

[UI3 업데이트] 피그마 배리어블을 활용한 디자인 시스템 구축하기

제가 개인 계정으로 강의를 듣고 있어서 BoldPlus Foundation 2025 v1의 Asset Publish가 되지 않는거 같아요. 수강생은 교육용 피그마 계정을 받을 수 있을까요? .

  • 웹-디자인
  • figma
  • figma-tokens
  • 디자인-시스템
  • 아토믹-디자인
  • figma-variable
  • 프로덕트디자인
김연진 댓글 2 좋아요 0 조회수 97

인기 태그

인프런 TOP Writers

주간 인기글