| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- list 컬렉션
- 이스케이프 문자
- 윤성우 열혈자료구조
- 혼자 공부하는 C언어
- JSON
- Algorithm
- s
- C 언어 코딩 도장
- 알기쉬운 알고리즘
- C programming
- 메모리구조
- Serialization
- datastructure
- Graph
- R
- buffer
- 윤성우의 열혈 자료구조
- coding test
- 이것이 자바다
- insertion sort
- stream
- Selection Sorting
- Stack
- Today
- Total
목록전체 글 (520)
Engineering Note
엔지니어는 문제를 해결하는 사람입니다. 문제를 어떻게 정의하느냐에 따라 해결의 방향이 달라집니다. 문제 정의 테스트 코드가 없다 보니 새로운 기능 개발이나 리팩토링을 시도할 때 주저하게 되고, 그 결과 코드가 점점 더 복잡해지는 악순환이 발생했습니다. 리팩토링의 목적은 기존 코드에 영향을 주지 않으면서 유지보수와 확장성이 용이한 구조로 개선하는 것입니다. 하지만 리팩토링 범위를 어디까지 설정할지, 수정 후 어떻게 검증할지 불확실한 상황에서는 설계 범위를 정하는 것 자체가 부담이 되고, 결국 리팩토링이 계속 미뤄지게 됩니다. 핵심 문제는 테스트 코드의 부재로 인해 새로운 기능 적용과 코드 구조 개선에 대한 확신을 가질 수 없다는 것입니다.해결 방안 이 문제의 해결책은 테스트 코드 작성입니다. 테스트 코드를..
에러메세지jakarta.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'flush' call at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:304) at jdk.proxy2/jdk.proxy2.$Proxy157.flush(Unknown Source) at com.shop.repository.ItemRepositoryT..
Spring Data JPA를 이용해서 별도의 코드 없이도 CRUD가 실행 가능한 기능뿐 아니라 개발자들에게는 개발 속도를 빠르게 하는 페이징 처리 기능을 제공합니다.페이징 처리는 Pageable이라는 타입의 객체를 구성해서 파라미터로 전달하면 됩니다. Pageable은 인터페이스로 설계되어 있고, 일반적으로는 PageRequest.of()라는 기능을 이용해서 개발이 가능합니다. PageRequest.of(페이지 번호, 사이즈): 페이지 번호 0 부터PageRequest.of(페이지 번호, 사이즈, Sort): 정렬 조건 추가PageRequest.of(페이지 번호, 사이즈, Sort.Direction, 속성): 정렬 방향과 여러 속성 지정 파라미터로 Pageable을 이용하면 리턴 타입은 Page 타입을..
연관관계 주인JPA에서 양방향 관계로 Entity가 있을 때 외래키를 관리해줄 주인을 정해주어야 한다. JPA는 연관관계의 주인이 어떤 Entity라고 지정하지 않고 연관관계 주인이 아니라는 의미로 'mapped by' 옵션으로 외래키를 관리 하지 않는다고 지정한다.Book과 BookStore 엔티티를 예시로 생각해볼 수 있다. Book과 BookStores는 다대일 관계고, 양방향으로 세팅을 해주었다. Book Entity@Entity@Getter @Setterpublic class Book { @Id @GeneratedValue private Long id; private String isbn; private String title; @ManyToOne priva..
⸻국내에서는 흔히 ‘개발자’라는 단어를 사용하지만, 해외에서는 ‘소프트웨어 엔지니어(Software Engineer)’라는 용어가 더 일반적입니다.두 단어는 비슷하게 들리지만, 실제로는 사고방식과 접근 방식의 방향이 다릅니다.⸻1. 개발자(Developer): 기획 중심의 사고‘개발자’는 주로 제품의 기능을 구현하는 사람으로 인식됩니다.즉, **“무엇을 만들 것인가”**에 초점을 맞춘 사고방식입니다.💡 특징• 기획서나 요구사항을 바탕으로 기능을 구현• 빠른 프로토타이핑과 제품 완성도 중시• 사용자의 경험(UX)과 편의성에 민감• 변화하는 시장 요구에 유연하게 대응• 프레임워크나 라이브러리 중심의 기술 사용🧭 핵심 질문“이 기능을 어떻게 구현할까?”“사용자가 편하게 느끼려면 어떻게 해야 할까?”🧱 사..
직접 할당: @ID 만 사용 자동 생성(@GeneratedValue) strategy(GenerationType = ) IDENTITY: 데이터베이스에 위임, MySQL(Auto Increment) SEQUENCE: 데이터베이스 시퀀스 오브젝트 사용, ORACLE AUTO: 방언에 따라 자동 지정, 기본값 TABLE:키 생성용 테이블 사용, 모든 DB에서 사용. => 거의 사용 X 참고 자료 : 인프런 JPA 기본편(김영한)
빌드 도구 종류- 메이븐, 그레이들 메이븐- 프레임워크에 관계없이 앱의 빌드 프로세스를 쉽게 관리하는데 사용하는 빌드 도구 그레이들- 메이븐과 마찬가지로 앱 프로세스를 쉽게 관리하는 빌드 도구 빌드도구가 수행하는 일- 앱에 필요한 의존성 내려받기- 테스트 실행- 구문이 정의한 규칙 준수 여부 검증- 보안 취약점 확인- 앱 컴파일- 실행 가능한 아카이브에 앱 패키징(JAR, WAR) GroupId : 관련된 여러 프로젝트를 그룹화 하는데 사용아티팩트 ID: 현재 애플리케이션 이름=> 지정하지 않으면 기본값으로 설정된다. 메이븐 프로젝트 구조는 프로젝트 개발을 위해 선택한 IDE에 의존하지 않는데, 메이븐 프로젝트 구조에서 중요한 파일은 pom.xml이다. maven 프로젝트 주요 구성pom.xml:..
본 글은 Spring의 핵심인 AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)를 학습하면서 @Transactional 어노테이션이 AOP의 대표적인 사례로 볼 수 있음을 알고 두 개념의 관계를 살펴보면서 각 개념을 더 깊이 이해하기 위한 목적으로 작성한 글입니다. @Transactional 어노테이션과 Spring AOP의 관계@Transactional은 **Spring AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍)** 개념이 적용된 대표적인 예시입니다.Spring은 AOP를 활용하여 개발자가 **비즈니스 로직(핵심 관심사)**과 **트랜잭션 처리(Commit/Rollback 등 부가 기능, 횡단 관심사)**를 분리할 수 있도록 지..
