- sql
- @transactional
- 1차원 배열
- spring boot
- java
- select
- Django
- 자바
- 문자열
- spring mvc
- join
- 스프링
- nginx
- mysql
- session
- string
- 데이터베이스
- Git
- ORM
- spring
- PYTHON
- SSL
- 스프링부트
- 프로그래머스
- spring security 6
- Docker
- AWS
- springboot
- jpa
- DI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
목록전체 글 (175)
개발하는 자몽
지난 포스팅에 이어서 작성합니다.2024.10.02 - [Java] - Java/Spring 테스트 - 1 의존성의존성컴퓨터 공학에서 말하는 의존성(Dependency)은 결합(Coupling)과 같은 의미로, 다른 객체의 함수를 사용하는 상태를 말함 ⇒ A는 B를 사용하기만 해도 의존한다고 할 수 있음의존성을 약하게 만드는 기술 중 하나가 의존성 주입필요한 값을 `new`해서 직접 인스턴스화하는 것이 아닌 외부에서 넣어주는 것`new`를 이용하여 인스턴스화 하는 것은 하드 코딩의존성 주입은 의존성을 약화시키는 것, 의존성을 완전히 없애는 방식이 아님의존성 제거 == 객체 간의 협력 부정 / 시스템 간의 협력 부정대부분의 디자인 패턴이나 설계는 어떻게 하면 의존성을 약화시킬 수 있는지 고민한 결과..
에러 원인정말... 바보같은... 실수였다... 오류가 났던 테스트 코드는 아래와 같다. ... @PersistenceContext EntityManager em; @Test void test() { UserEntity userEntity = UserEntity.builder() .nickname("test") .email("test@example.com") .build(); userEntity = userRepository.save(userEntity); userService.sumTotalAmount(userEntity, 10_000L); ..
이 글은 아래 인프런 강의를 듣고 기록을 남기고자 작성하였습니다. Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트 강의 | 김우근 - 인프런김우근 | Spring에 테스트를 넣는 방법을 알려드립니다! 더 나아가 자연스러운 테스트를 할 수 있게 스프링 설계를 변경하는 방법을 배웁니다., 프로젝트 설계를 발전시키는 테스트의 본질을 짚www.inflearn.com 🔖목차🔖TDD테스트란테스트TDD장단점개발자의 고민테스트 코드의 필요성좋은 아키텍처란필요성테스트 3분류개념 TDD회귀 버그(Regression Bug) → 테스트 자동화테스트 추가소프트웨어의 내적 품질 향상 O, 사용자가 체감할 수 있는 외적 품질 향상 X가시적 성과 지표 → 커버리지(Coverage) 비결정적인 테스트테스트를..
`Dockerfile` 안에서 스프링 부트 프로젝트를 `gradlew`로 빌드하려고 찾아보니 `build` 말고 `bootJar`를 추천했다. 이유가 궁금해져서 이렇게 글을 정리하게 되었다. build`build`는 Base Plugin이 제공하는 생명주기 작업으로, 대상 소스의 생명주기 확인이나 어셈블 작업을 수행한다. 여기에는 테스트 실행이나 프로덕션 아티팩트 생성 등이 포함되어 있다. bootJar`bootJar`는 대상 소스를 실행가능한 `jar` 파일로 빌드하는 것으로, 빌드 속도가 `build` 작업에 비해 빠르고 당연히 생성되는 것도 적다. 이렇게 빌드된 파일은 `build/libs/*.jar`에 위치하게 된다. 이렇게 생성된 파일을 대상으로 `jar -xf {대상 jar 파일}` 명령어를..
@Embeddable, @Embedded`@Embeddable` 애노테이션이 있는 클래스는 기본 생성자가 필요함임베디드 타입은 값 타입에 속하는데, 이러한 값 타입은 여러 엔티티에서 공유하면 side effect를 일으킬 수 있다.따라서 불변 객체(Immutable Object)로 설정하여 이러한 문제를 방지하는 것이 좋다.`@Embeddable` 클래스에 수정자(setter)를 생성하지 않고 생성자만 두어, 생성자로만 값을 설정하게 한다수정자가 없으므로 해당 임베디드 값 타입을 필드로 갖고 있는(@Embedded) 엔티티에서는 특정 값만 수정하는 것이 불가능. 객체를 새로 생성해야 함. public static void main(String args[]) { Address address = new..
`new Integer(int)`는 새로운 객체 인스턴스를 매번 생성한다. `Integer.valueOf(int)`은 지정된 `int` 값을 나타내는 `Integer` 인스턴스를 반환한다.새로운 `Integer` 인스턴스가 필요한 경우가 아니라면, 일반적으로 생성자 `Integer(int)` 보다 해당 메서드를 우선적으로 사용하는 것이 메모리 측면에서 권장된다. 이는 자주 요청되는 값을 캐싱하여 더 나은 공간 및 시간 성능을 제공할 가능성이 높기 때문이다. 다음은 예시 코드다.public static void main(String[] args) { Integer a = new Integer(10); Integer b = new Integer(10); System.out.p..
상황`Required reuqest body is missing`라는 문구와 함께 `HttpMessageNotReadableException` 타입의 에러가 발생했다. `Controller`의 있는 메서드에서 `request body`를 인식하지 못하는 문제인 것으로 확인했다.@RestControllerpublic class RestController { @PostMapping("/aaa") public ResponseEntity aaa(@RequestBody @Valid final RequestDto dto) { ... return ResponseEntity.status(HttpStatus.CREATED).build(); } ...}해당 메서드에 `@RequestBo..
프로젝트를 진행하면서 Java 환경에서 Python 프로그램을 실행해야 할 일이 생겼다. 해본 적이 없어서 할 수 있는지가 걱정이었는데 역시 안될 건 없다. 종류일단 외부 프로그램을 실행할 때 쓰이는 방법들을 찾아보았다.JSR-233 Scripting EngineJythonProcessBuilderApache Common Exec(thrid-party lib)ZT Process ExecutorHTTP (python server) JSR-233 Scripting EngineJava 6 부터 지원set of scripting APIs`CLASSPATH`에 `Jython`이 있어야 함Jython의 경우 파이썬 라이브러리를 한정적으로 사용하게 됨 Jython자바 코드에 파이썬 코드를 직접적으로 임베딩할 수 있음..
JPA 데이터베이스 스키마 자동 생성개발 서버에서는 가급적 `none`테스트 서버와 스테이징 서버에 `validate` 정도는 괜찮은 듯. 그래도 가급적 `none`을 권장. 혼자 개발하는 환경에서는 `validate` 정도는 괜찮지만, 여러 명이 함께 개발하는 곳에서는 `none`.실제 운영서버에서는 아예 `none`. 수많은 데이터가 있는 운영 서버에서 `ALTER` 쿼리 등을 잘못 입력하면 시스템이 중단 상태가 될 수도 있음. 그래서 가급적 작성한 쿼리가 잘 동작하는지 테스트 서버에서 확인해봐야 함.운영 서버에 스크립트를 반영할 때 가급적이면 쿼리를 다듬어서 넘긴다. 필드와 컬럼 매핑`@Column`의 `unique=true` 제약 조건은 잘 사용하지 않는다. 사용 시 제약 조건 이름이 랜덤 생성되..
이 글은 아래 강의를 바탕으로 공부한 내용을 정리하는 글입니다. 자바 ORM 표준 JPA 프로그래밍 - 기본편 | 김영한 - 인프런김영한 | JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 실무에서도www.inflearn.com 🔖목차🔖영속성 컨텍스트엔티티의 상태1차 캐시엔티티 등록 - 쓰기 지연변경 감지(Dirty Checking)SUMMARY 영속성 컨텍스트엔티티를 영구 저장하는 환경논리적 개념, 눈에 보이지 않음`EntityManager`를 통해서 접근`EntityManager`는 엔티티를 조작하고 데이터베이스와의 통신을 수행하는 인터페이스. 엔티티의 영..