no image
벌크 연산
벌크 연산일괄 처리를 위해 대량의 데이터를 처리하는 작업입니다. 데이터베이스에서 UPDATE 또는 DELETE 쿼리를 사용하여 한 번에 여러 행을 변경하는 것이 일반적인 입니다. JPA에서 벌크 연산은 대량의 데이터를 변경하기 위한 메커니즘을 제공합니다. 일반적으로 영속성 컨텍스트를 통해 개별 엔티티의 변경을 추적하고, 트랜잭션을 커밋할 때 변경 사항을 데이터베이스에 반영합니다. 그러나 벌크 연산은 단일 엔티티의 변경을 추적하고, 트랜잭션을 커밋할 때 변경사항을 데이터베이스에 반영합니다. 그러나 벌크 연산은 단일 엔티티의 변경이 아닌 여러 엔티티에 대한 변경을 수행할 때 사용합니다. 이러한 변경은 일반적으로 JPA의 더티 채킹 메커니즘이나 트랜잭션 커밋 시점에만 적용되는 것이 아니라, 데이터 베이스에 대..
2024.04.29
no image
OSIV
OSIV 소프트웨어 개발에서 주로 웹 애플리케이션에서 사용되는 패턴 중 하나입니다. 이 패턴은 영속성 컨텍스트를 뷰까지 확장하여 데이터베이스 트랜잭션의 영향 범위를 확장시키는 기능을 제공합니다. 주로 JPA나 Hibernate와 같은 영속성 프레임워크에서 사용됩니다. 일반적으로, 웹 애플리케이션에서는 클라이언트의 요청을 처리하는 동안 여러 개의 데이터베이스 조회가 발생할 수 있습니다. 이 경우, 각각의 데이터베이스 조회는 별도의 트랜잭션을 필요로 합니다. 그러나 웹 애플리케이션에서는 주로 한 번의 요청을 대해 한 번의 트랜잭션을 사용하게 됩니다. 이는 뷰를 렌더링 하기 위해 여러 데이터베이스 조회가 필요할 때 문제가 될 수 있습니다. 예를 들어 뷰에서 지연 로딩을 통해 연관된 엔티티를 로드하려고 할 때 ..
2024.04.10
no image
@Not Empty
@Not Empty Java 애플리케이션에서 주로 사용되는 유효성 검사입니다. Spring Boot나 Jakarta와 같은 프레임 워크에서 사용되며, 주어진 필드가 비어있지 않고 , 빈 문자열이 아님을 확인하는 데 사용됩니다. 이를 통해 @NotNull이나 @Not Black와 함께 사용하여 포괄적인 유효성 검사를 제공할 수 있습니다. 검사 대상 클래스 필드에 적용하여 해당 필드가 유효한 값으로 채워져야 함을 나타냅니다. 메서드의 매개변수에 적용하여 해당 매개변수가 null이 아니고 , 빈 문자열이 아닌지를 검사하빈다. 동작 방식 @NotEmpty 유효성 검사 시 값을 검사하기 전에 null 체크를 수행합니다. 값이 null일 때 검증 실패로 간주 되며 빈 문자열("")도 유효하지 않은 값으로 간주하여 ..
2024.04.01
no image
Enumerated
Enumerated 열거형인 Enum 타입의 필드를 매핑할 때 사용되는 어노테이션이며, 열거형 상수를 DB에 어떻게 저장할지를 지정하는데 사용됩니다. @Enumerate(EnumType.STRING) 열거형 상수의 이름을 문자열로 데이터베이스에 저장하빈다. 즉 열거형 상수의 이름 그대로를 데이터베이스에 저장하게되빈다. 이방식은 데이터베이스에 저장된 값이 일기 쉽고 가독성이 높으며, 열거형 상수의 순서가 변경되어도 데이터베이스에 미치는 영향이 없어 유연성이 높습니다. 그러나 문자열로 저장되기 때문에 데이터베이스 크기가 늘어날 수 있고, 오타 의 인식 문제가 발생할 수 있습니다. @Enumerate (EnumType.ORDINAL) 열거형 상수의 순서를 정수로 데이터베이스에 저장합니다. 따라서 데이터베이스에..
2024.03.28
no image
클래스 분리
관심사 분리와 확장성 확보 두 개의 관심사를 독립시키면서 동시에 손쉽게 확장할 수 있는 방법 방법은 간단하다. DB 커넥션과 관련된 부분을 서브클래스가 아닌 별도의 클래스에 담으며 이렇게 만든 클래스를 UserDao가 이용하면 됩니다. 1. 관심사 분리 관심사 분리는 소프트 웨어 디자인 원칙 중 하나로, 프로그램을 여러 부분으로 나누어 각 부분이 특정한 관심사에 집중하도록 하는 것을 말합니다. 코드의 유지보수성과 가독성을 향상하고, 코드의 재사용성을 높이는데 도움이 됩니다. 2. 확장성 확보 확장성은 시스템이 늘어나는 요구사항에 대해 적절히 대응할 수 있는 능력을 말합니다. 소프트웨어 시스템은 초기 설계 시 확장성을 고려하여야 하며, 확장성을 고려하지 않은 시스템은 새로운 요구사항이나 사용자 증가에 쉽게..
2024.03.27
no image
초난감 DAO
DAO Data Access Object의 초보적인 형태를 가리키는 용어이며 DAO는 소프트웨어 개발에서 데이터베이스나 다른 영속성 메커니즘에 접근하는 객체를 추상화하는 패턴입니다. DAO 패턴은 데이터 액세스 로직을 비즈니스 로직과 분리하여 코드의 유지 보수성을 높이고 확장성을 개선하는 데 사용됩니다. DAO 특징 간단한 인터페이스로 데이터 액세스를 위한 메서드들을 정의한 간단한 인터페이스를 가지고 있습니다. 주로 CRUD 연산을 수행하기 위한 메서드들이 포함됩니다. 단순한 구현 클래스로 DAO 인터페이스의 메서드들을 구현하는 단순한 구현 클래스가 있으며 이 클래스는 주로 JDBC를 사용하여 데이터베이스와 통신하고 SQL 쿼리를 실행합니다. DAO 인터페이스를 구현한 DAO 클래스들은 일반적으로 모의 ..
2024.03.26
no image
CRON 표현식
CRON 표현식 주기적으로 실행되어야 하는 작업을 정의하는 일반적인 방법입니다. 이것은 UNIX 및 유닉스 기반 시스템에서 널리 사용되며, 다양한 스케줄링 작업에 활용됩니다. CRON 표현식을 작성할 때 주의할 점은 각 필드가 해당 시스템의 로컬 시간대 및 설정에 따라 해석되기 때문에 때때로 시스템의 로컬화된 환경 설정에 따라 결과가 달라질 수 있기 때문에 이것을 고려해야 합니다. 필드 허용되는 값 허용되는 특수문자 년 1970 ~ 2099 , - * / 월 1 ~ 12 또는 JAN ~ DEC , - * / 요일 0 ~ 6 또는 SUN ~ SAT , - * / L # 일 1 ~ 31 , - * / L W 시 0 ~ 23 , - * / 분 0 ~ 59 , - * / 초 0 ~ 59 , - * / 특수 문자..
2024.02.08
no image
STOMP
@Configuration @EnableWebSocketMessageBroker public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableSimpleBroker("/topic"); // 메시지 브로커를 설정 ("/topic"은 예시) config.setApplicationDestinationPrefixes("/app"); // 클라이언트로부터의 메시지를 처리할 엔드포인트 설정 } @Override public void registerStompEndpoints(S..
2024.01.23
no image
Web Socket
Web Socket 웹 기술에서 실시간 양방향 통신을 가능케 하는 프로토콜 중 하나입니다. 초기에 웹에서 주로 폴링이나 롱 폴링 같은 방식을 통해 실시간 통신을 시도했으나 이러한 방식들은 효율성이나 성능 면에서 한계가 있습니다. 웹 소켓은 이러한 한계를 극복하기 위해 설계되었습니다. 기존의 HTTP 프로토콜은 클라이언트가 서버에게 요청을 보내고, 서버가 응답을 보내는 단방향 통신이었습니다. 반면에 웹 소켓은 클라이언트와 서버 간에 양방향 통신이 가능하도록 하면, 이를 위해 TCP 접속을 유지하게 됩니다. 또한 웹소켓은 실시간 채팅 어플리케이션, 소셜 네트워크 서비스, 협업 도구, 멀티플레이 게임, 화상 회의 등 다양한 분야에서 사용되고 있습니다. 웹 소켓 동작 방식 1. 포트 및 프로토콜 선택 웹 소켓은..
2024.01.22