일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 객체 지향 설계와 스프링
- 컨베이어 벨트 위의 로봇 Python
- 코틸린인액션
- 백준 13460 Python
- 20055
- 백준 20055 컨베이어 벨트 위의 로봇
- 고급매핑
- 스프링 핵심 원리 이해
- 백준
- 20055 컨베이어 벨트 위의 로봇
- Kotlin in action 10장
- Kotlin in action 6장
- 코틀린인액션
- 스프링 컨테이너와 스프링 빈
- Kotlin
- spring
- Python
- 13460 구슬탈출 2
- 기능개발 python
- 7장 고급매핑
- Kotlin In Action
- Kotlin in action 3장
- 싱글톤 컨테이너
- kotlin in action 정리
- 코틀린
- KotlinInAction
- 스프링 핵심 원리 - 기본편
- 자바 ORM 표준 JPA 프로그래밍 7장
- 스프링 핵심 원리
- Kotlin in action 5장
- Today
- Total
목록개발/Spring (22)
기록하는 습관
일반적인 의미 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 그 결과 소스코드 compile .class로 변환 resource를 .class에서 참조할 수 있는 위치로 옮김 META-INF, MANIFEST.MF들을 하나로 압축하는 과정 compile 이란? java의 경우, 컴파일 결과로 .class 파일이 생김. build를 진행하는 과정에서 발생하는 하나의 task build tool에서의 build의 의미 빌드 대상에 어떤 행위를 하는 것이 Build Tool 에서의 Build 의미 Gradle에서는 이런 행위의 단위를 task라고 함. 이런 task를 실행하는 것을 Build라고 함. intellij 실행 버튼으로 빌드 vs gradle build https://w..
ant 특징 XML 기반 빌드 스크립트 개발 규칙이 없음 절차적이다. 생명주기를 갖지 않아 각각의 Target에 대한 의존관계와 작업을 정의해 주어야 함. 단점 스크립트의 재사용이 어렵다. maven 특징 모든 Dependency를 리스트의 형태로 Maven에게 알려서 종속성을 관리한다. XML, Repository를 가져올 수 있다. → Jar, Class Path를 선언만 하면 직접 다운로드 할 필요가 없이 Repository에서 자동으로 필요한 라이브러리 파일을 불러와 준다. 단점 라이브러리가 서로 종속할 경우 XML이 복잡해진다. 라이프 사이클(빌드 순서) Clean : 이전 빌드에서 생성된 파일들을 삭제하는 단계 Validate : 프로젝트가 올바른지 확인학고 필요한 모든 정보를 사용할 수 있는..

maven gradle id 'io.spring.dependency-management' version '1.0.11.RELEASE' Gradle 사용 시, io.spring.dependency-management 플러그인을 적용하면 자동으로 spring-boot-starter-parent을 import. Gradle 사용 시 Parent 설정 불필요한 이유 springboot & gradle version 기존 datacenter spring boot version: 1.5.4 시도한 gradle version: 7.x → 빌드는 되지만, jar를 실행하면 "기본 클래스를 로드할 수 없습니다." 에러발생 bootRepackage: 1.5 까지 사용된 스프링 부트 태스크 bootJar(or bootWar..
기본적으로 JPA에서 update를 하려면 다음과 같이 진행하는 것이 일반적이다. @Modifying @Query("UPDATE Post p SET p.title = :title WHERE p.id = :id") int updateTitle(String title, Long id); 예제 step 저장 - Post 객체 save() 수정 - post.updateTitle("변경진행") 조회 - findById(post.getId()) 위와 같은 코드를 짰을 때, 발생하는 문제점은 다음과 같다. updateTitle 함수 실행 후, 객체를 확인하면 값이 변경되어 있지 않다. findById()를 호출시, select 쿼리는 수행되지 않는다. → 이유: findById()는 DB를 확인하기 전에 우선적으로 ..
연관관계의 대칭성 일대다 ↔ 다대일 일대일 ↔ 일대일 다대다 ↔ 다대다 다대일(N:1) - @ManyToOne ex) 게시판(Board)과 게시글(Post)의 관계 요구 사항 하나의 게시판(1)에는 여러 게시글(N)을 작성할 수 있다. 하나의 게시글은 하나의 게시판에만 작성할 수 있다. 게시글과 게시판은 다대일 관계를 갖는다. 데이터베이스를 기준으로 다중성(게시글N : 게시판1)을 결정. 즉, 외래 키를 게시글(N)이 관리하는 일반적인 형태이다. 참고) 데이터베이스는 무조건 다(N)쪽이 외래 키를 갖는다. 단방향 Post(N) 객체에 Board(1) 객체 선언 후, @ManyToOne 어노테이션 추가. Board 객체에서는 참조하지 않음. 1 2 3 4 5 6 7 8 9 10 @Entity public ..
연관 관계 정의 규칙 방향 : 단방향, 양방향 (객체 참조) 연관 관계의 주인 : 양방향일 때, 연관 관계에서 관리 주체 다중성 : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 단방향, 양방향 데이터베이스: 외래 키 하나로 양 쪽 테이블 조인이 가능 객체: 참조용 필드가 있는 객체만 다른 객체를 참조하는 것이 가능 그렇기 때문에 두 객체 사이에 하나의 객체만 참조용 필드를 갖고 참조하면 단방향 관계, 두 객체 모두가 각각 참조용 필드를 갖고 참조하면 양방향 관계라고 한다. 엄밀하게는 양방향 관계는 없고 두 객체가 단방향 참조를 각각 가져서 양방향 관계처럼 사용하고 말하는 것. 단방향, 양방향 선택? 비즈니스 로직에서 두 객체가 참조가 필요한지 여부를 고민하기. GroupCondi..

[ 컴포넌트 스캔과 의존관계 자동 주입 시작하기 ] 지금까지는 스프링 빈을 등록할 때 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직 접 등록할 스프링 빈을 나열했다. 만약 등록해야 할 빈이 수백개가 된다면 관리하기 번거로워진다. 따라서, 스프링은 설정 정보가 없어도 자동으로! 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공한다. 의존 관계도 자동으로 주입해주는 @Autowired 기능도 제공한다. 컴포넌트 스캔(Component Scan) @Component 어노테이션이 붙은 모든 클래스를 스캔해서 스프링 빈으로 등록한다. 이 때, 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자를 사용한다. 빈 이름 기본 전략: MemberServiceImpl 클래스 -> memberS..

[ 싱글톤(Singleton) 패턴 ] 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 객체 인스턴스를 2개 이상 생성하지 못하도록 private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 한다. 싱글톤 미적용 상태 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때 마다 객체를 새로 생성한다. 만약, 고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸된다.. -> 메모리 낭비가 심함! 싱글톤 적용 상태 이 객체 인스턴스가 필요하면 오직 getInstance() 메서드를 통해서만 조회 할 수 있다. 이 메서드를 호출하면 항상 같은 인스턴스를 반환한다. [ 싱글톤 패턴 문제점 ] 싱글톤 패턴을 구현하는 코드 자체가 많이 ..