본문 바로가기

분류 전체보기101

JPA @Where 일괄 조회 사용법 및 문제점과 해결방안 프로젝트 진행 중, 엔티티 특정 필드의 상태가 'N'인 모든 데이터가 조회되지 않도록 일괄 적용할 방법이 필요하여 @Where를 적용하게 되었고 사용 방법 및 적용 이후 발생한 문제와 다양한 테스트 경험에 대해 공유하고자 한다. - 사용 방법 @Where의 사용방법은 굉장히 단순하다. 엔티티 클래스에 org.hibernate.annotations 패키지의 @Where를 클래스 단위에 작성하면 된다. (해당 어노테이션은 클래스뿐 아니라 메서드, 필드 단위도 설정은 가능하지만 테스트를 진행하지는 않았다.) 만약, 입양되지 않은 상태의 시바견 데이터는 항상 조회 조건에 포함이 안되었으면 좋겠다.라고 한다면 is_adopted 필드의 상태가 'N'이 아닌 데이터만 조회할 수 있도록 설정한다. @Where(cla.. 2023. 1. 24.
JPA @Query @Modifying 벌크 삭제 연산시 연관관계 문제 해결하기 (with SQLIntegrityConstraintViolationException) - 문제 여러 데이터를 삭제할 때 @Query와 @Modifying를 사용하는 벌크 연산을 통해 성능 최적화를 시도했으나 SQLIntegrityConstraintViolationException 예외와 함께 삭제가 진행되지 않는 상황이 발생했다. [DataBase - Table] shiba [DataBase - Table] shiba_house [Entity] Shiba @Entity @Table(name = "shiba") @Getter @ToString @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Shiba extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDE.. 2023. 1. 22.
JPA @Query @Modifying 벌크 연산시 자동 업데이트(Auditing) 주의사항 - 문제 @Query + @Modifying를 활용해 업데이트 벌크 연산을 진행했는데, Auditing + @LastModifiedDate가 작동하지 않는 것을 확인했다. 1. Auditing과 @LastModifiedDate을 적용하고 10개의 임의 데이터를 추가한다. 2. @Query + @Modifying을 활용한 벌크 연산을 진행한다. - ShibaRepository @Modifying(clearAutomatically = true) @Query("update Shiba s set s.age = :age where s in (:shibaList)") int updateAllShibaAge(@Param("age") Integer age, @Param("shibaList") List shibaList.. 2023. 1. 15.
Proxy 설정을 통해 로컬에서 개발중인 React와 서버 통신 설정하기 * 문제점 개발중인 프론트 클라이언트 서버(http://localhost:3000)과 백엔드 서버(http://localhost:8080)간 통신이 되지 않았다. * 원인 백엔드 서버는 8080 포트, 리액트 개발 서버는 3000포트로 열려 있기 때문에 별도의 설정이 없이 API를 호출하려고 하면 CORS(Cross Origin Request) 오류가 발생한다. 해당 오류는 네트워크 요청을할 때 주소가 다른 경우에 발생하며, 일반적인 해결을 위해서는 백엔드 쪽에서도 API를 호출할 수 있도록 서버 쪽 코드를 수정해야 한다. 하지만 프로젝트를 완성했을 때 만약 동일한 호스트에서 서비스를 제공할 생각이라면 이러한 설정은 사실 불필요한 설정이다. * 해결 방법 서버쪽 API 수정이 아닌 Proxy 설정을 통해.. 2023. 1. 8.
JPA, ORM 그리고 패러다임의 불일치 # JPA(Java Persistence API), ORM(Object-Relational Mapping)은 무엇인가? JPA는 자바 ORM 기술 표준으로서, 애플리케이션과 JDBC 사이에서 동작한다. ORM은 객체와 '관계형 데이터베이스를 매핑'한다는 의미이다. # ORM 프레임워크 특징 개발자가 조회/저장/수정/삭제 작업을 위해 SQL문을 직접 작성하지 않고, 자바 컬렉션 다루듯이 사용할 수 있다. 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해 주는 역할을 수행한다. 개발자는 데이터 중심인 관계형 데이터베이스를 사용해도 애플리케이션 개발에만 집중할 수 있다. # 패러다임의 불일치 객체와 관계형 데이터베이스는 지향하는 목적이 서로 다르므로 둘의 기능과 표현 방법이 다르다. 따라서.. 2022. 7. 24.