일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- NIO
- 리눅스
- write by chatGPT
- GPT-4's answer
- GIT
- kotlin
- oracle
- lombok
- 인프라
- JVM
- 시스템
- 역학
- Database
- 자바네트워크
- write by GPT-4
- 파이썬
- 고전역학
- 자바
- 자바암호
- android
- chatGPT's answer
- 뉴턴역학
- 코틀린
- 유닉스
- python
- 웹 크롤링
- 소프트웨어공학
- Spring Batch
- Spring boot
- Java
- Today
- Total
목록Spring.io (30)
Akashic Records
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xBmlN/btsaETEG3WB/9CFQP8XOCMoklakbhY92j0/img.png)
spring batch 프로젝트에서 sftp, ssh 프로토콜로 itemwrite, itemread기능을 구현하려고 하는데 코드 만들어줘 Spring Batch를 사용하여 SFTP/SSH 프로토콜로 파일을 읽고 쓰는 기능을 구현하려면, ItemReader 및 ItemWriter 인터페이스를 구현하는 커스텀 컴포넌트를 작성해야 합니다. 또한, jsch 라이브러리를 사용하여 SFTP/SSH 연결 및 파일 작업을 수행할 수 있습니다. 먼저, 프로젝트에 jsch 라이브러리를 추가하세요. Maven: com.jcraft jsch 0.1.55 Gradle: implementation 'com.jcraft:jsch:0.1.55' 다음으로, SFTP를 사용하여 파일을 읽는 ItemReader를 작성합니다. import..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dKGzVQ/btsaqP1Oyvl/XxNxPMVkyx0HEKL7f9ZCK1/img.webp)
Spring Framework Web에서는 다양한 종류의 필터를 사용할 수 있습니다. 이 필터들은 HTTP 요청을 처리하기 전에 전처리를 수행하거나, 응답을 처리하기 전에 후처리를 수행하는데 사용됩니다. 아래에서 대표적인 필터들에 대해 설명하고, 각 필터의 사용 예시를 제공하겠습니다. javax.servlet.Filter: 기본적인 서블릿 필터입니다. 요청 및 응답을 처리하기 전후에 로직을 실행할 수 있습니다. 이 필터를 구현하는 방법은 다음과 같습니다. import javax.servlet.*; import java.io.IOException; public class MyServletFilter implements Filter { @Override public void init(FilterConfig ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/5UWh2/btr9BIpirno/zpHjM8InsByGj5PvUEmkB0/img.png)
FetchType은 JPA에서 엔티티 간의 관계를 로드하는 전략을 결정하는 역할을 합니다. FetchType은 주로 @ManyToOne, @OneToMany, @OneToOne, @ManyToMany와 같은 관계를 정의하는 어노테이션에서 사용됩니다. FetchType에는 EAGER와 LAZY 두 가지 옵션이 있습니다. FetchType.EAGER (즉시 로딩): EAGER 전략은 부모 엔티티를 조회할 때 관련된 자식 엔티티를 함께 로드합니다. 이 방식은 부모 엔티티를 조회하는 즉시 관련된 자식 엔티티에 대한 데이터도 함께 로드되므로, 연관된 엔티티의 데이터를 필요로 하는 경우 효과적입니다. 그러나 즉시 로딩은 성능에 영향을 줄 수 있습니다. 관련된 엔티티가 많거나, 필요하지 않은 데이터를 로드하는 경우가..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bku3Y7/btr9C4r2HRD/ZwWkuJaPPd8P3n5C98RBM1/img.png)
@OneToMany Entity을 RestAPI로 리턴할때 부한 반복 오류 부모-자식 엔티티 간의 양방향 관계에서 @OneToMany를 사용하면, REST API로 엔티티를 리턴할 때 순환 참조(Circular Reference) 문제가 발생할 수 있습니다. 이 문제는 JSON 직렬화 시 무한 루프를 일으키며, 결국 StackOverflowError가 발생하게 됩니다. 이 문제를 해결하기 위해선 Jackson 라이브러리의 @JsonManagedReference 및 @JsonBackReference 어노테이션을 사용하거나, @JsonIgnore 또는 @JsonView를 사용하여 직렬화를 제한할 수 있습니다. @JsonManagedReference와 @JsonBackReference 사용 @JsonManag..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/csyOMv/btr9nl88vQr/DopDIILirLzEDEWWyq1tp0/img.png)
PagingAndSortingRepository는 Spring Data JPA에서 페이징 및 정렬 기능을 제공하는 인터페이스입니다. JpaRepository는 PagingAndSortingRepository를 상속하므로, JpaRepository를 사용하면 PagingAndSortingRepository의 기능을 함께 사용할 수 있습니다. 예제를 통해 자세히 살펴보겠습니다. 엔티티 클래스: @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String firstName; private String lastName; private String email; // 생..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bvLOdv/btr9kjRP7MZ/95dNdP21zQzthhkKgbKE71/img.png)
@Query 어노테이션은 Spring Data JPA에서 사용자 정의 쿼리를 작성하는데 사용됩니다. @Query 어노테이션을 사용하면 레포지토리 메서드에 JPQL(Java Persistence Query Language) 또는 네이티브 SQL 쿼리를 지정하여 복잡한 조회 쿼리를 작성할 수 있습니다. 이렇게 하면 기본 제공되는 메서드 이름 기반의 쿼리를 사용할 수 없는 경우에도 데이터를 조회할 수 있습니다. 예제를 통해 자세히 살펴보겠습니다. 엔티티 클래스: @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String firstName; private Strin..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bUxQP3/btr9eCj2cSF/szULJdm4sIGXwZSx6FB1rk/img.png)
Spring Data JPA는 Java Persistence API (JPA)를 사용하여 관계형 데이터베이스에 액세스하는 방법을 간소화하는 라이브러리입니다. Spring Data JPA는 공통적으로 사용되는 CRUD(Create, Read, Update, Delete) 작업을 위한 기본 구현을 제공하며, 개발자는 몇 줄의 코드만으로 빠르게 데이터베이스와 통신할 수 있는 애플리케이션을 작성할 수 있습니다. Spring Data JPA의 주요 기능: Repository 인터페이스: JpaRepository, CrudRepository, PagingAndSortingRepository 등과 같은 인터페이스를 상속받아 커스텀 Repository 인터페이스를 생성합니다. 이러한 인터페이스는 공통적인 데이터 액세스..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Fn8Ew/btr9miE5UQZ/2OREaq79CodFYJvmG7kmmK/img.png)
Spring Data JPA에서는 findBy로 시작하는 메서드 이름을 사용하여 쿼리 메서드를 생성할 수 있습니다. 이를 통해 쉽게 엔티티를 필터링하거나 정렬하는 등의 작업을 수행할 수 있습니다. 메서드 이름만으로도 JPA가 쿼리를 자동으로 생성하므로, 개발자는 직접 쿼리를 작성할 필요가 없습니다. 다음은 findBy 키워드를 사용하는 예시입니다: public interface UserRepository extends JpaRepository { // 단일 속성으로 검색 List findByLastName(String lastName); // 다중 속성으로 검색 List findByFirstNameAndLastName(String firstName, String lastName); // IgnoreCas..