게시글을 올리고 삭제했을때,데이터를 완전 삭제해버리는 Hard Delete 방식과데이터를 남기는 Soft Delete 방식이 존재한다. 어떻게 운영하냐에 따라서 각각의 방식을 사용할 수 있다. 사내 백오피스를 리뉴얼하면서 레거시를 보니어떤 메뉴는 Hard 방식 어떤메뉴는 Soft 방식을 혼용하고 있었다. 그래서 동일하게 가져가기 위해 모든 메뉴의 삭제기능을 soft 방식으로 가져가려고 한다. JPA 엔티티에 @SQLDelete 어노테이션을 사용하여Delete 명령시 Update로 삭제유무 컬럼을 조정하게 해줄 수 있다. 적용한 엔티티는 아래와 같다.@Entity@Table(name="sample")@SQLDelete(sql = "UPDATE sample SET DELETE_YN = '..
SpringBoot 에 h2 를 연결해서 JPA를 사용하는 기초 방법을 작성해본다. 사내에는 보통 구축된 DB가 있기 때문에 DB가 정해지지 않은 테스트 시 빼고는 잘 사용할 일이 없었는데 스터디하다가 연결하게 되어 남겨본다. 프로젝트 생성 IntelliJ 2023.3.4 를 사용하니까 이제 spring 프로젝트가 3버전으로 생성되어 jdk8 버전 프로젝트를 자동 생성할 수 없는 것 같다. 바꾸고 싶다면 상위버전으로 생성뒤에 다운그레이드 해야 할 듯 싶다? 다음으로 넘어가서 디펜던시를 추가하자 간단하게 필요한 녀석들만 추가해주고 프로젝트를 생성하자 아래와 같이 build.gradle 이 생성될 것이다. plugins { id 'java' id 'org.springframework.boot' version..
DB쪽을 엄청 빠삭하게 아는건 아니지만 JPA 사용하다가 DB 마다의 구조적 차이점이 꽤 영향을 주는걸 알게 되면서 간단하게 남겨본다. 보통은 데이터베이스 - 스키마 - 테이블 구조로 되어있고 데이터베이스 설정을 하고 엔티티에서 테이블 이름만 지정해놓고 사용하면 기본 디폴트 스키마를 기준으로 테이블 조회를 하게 되는데 다른 데이터베이스나 스키마를 다중 참조해야 할 때, 이 부분이 DB마다의 계층구조로 약간 상이해지는걸 발견했다. 모든 DB의 구조를 잘 안다면 큰 문제가 없었겠지만, 몇가지 DB만 쭉 사용하다가 어쩌다가 다른 DB를 쓸때 동일하게 설정했는데 table이 없다는 오류를 보고서 왜!!! 를 시전한것 같다. 보통 oracle 은 하나의 인스턴스에 계정별 스키마로 접근하게 되어있어 @Entity ..
지난번에 이기종 DB 를 연결하기 위해 Datasource 를 분리하는 작업을 했었는데거기에 덧붙여 JPA와 Mybatis를 사용할 수 있게하고 QueryDSL 까지 사용하려고 한다. [SpringBoot JPA] 다중 DB 설정하기 (multi Datasource + 이기종 DB)간혹 사이트들을 연계해야 할때, 그 중에서도 api 없는 사이트의 데이터를 사용해야할 때, 하나의 웹에서 여러 DB를 연결 시켜 사용해야 할 때가 있다. 간단하게 DB Link 로 해결하려 했으나 메인으jong-bae.tistory.com JPA 설정만으로 분리하는 것은 위 전 포스팅과 같이 매우 간편하게 설정할 수 있었다.하지만 필자 프로젝트에 Mybatis도 간혹 필요한 부분이 있어서 설정하는데약간의 예상치 못한 시행..
JPA 를 다중 Datasource 로 구성할때, LocalContainerEntityManagerFactoryBean 에서 프로퍼티를 setJpaPropertyMap 을 이용해 설정 할 때 key 값 리스트는 아래와 같다. hibernate.dialect : Hibernate가 사용하는 SQL dialect를 지정합니다. hibernate.hbm2ddl.auto : DDL 생성 전략을 지정합니다. hibernate.show_sql : SQL을 출력할지 여부를 지정합니다. hibernate.format_sql : SQL을 포맷할지 여부를 지정합니다. hibernate.use_sql_comments : SQL에 주석을 추가할지 여부를 지정합니다. hibernate.connection.driver_class..
간혹 사이트들을 연계해야 할때, 그 중에서도 api 없는 사이트의 데이터를 사용해야할 때, 하나의 웹에서 여러 DB를 연결 시켜 사용해야 할 때가 있다. 간단하게 DB Link 로 해결하려 했으나 메인으로 쓰는 DB와 타 사이트 DB가 달라서 복잡쿼리를 쓸때 제약이 쫌 발생해서 DB를 하나 더 연결하기로 했다. SpringBoot 는 Database 연결을 자동으로 해주기 때문에 다중 DB를 연결하려면 설정부를 재작성해줘야 한다. 일단 db 연동 정보를 추가해준다. spring: datasource: driver-class-name: org.mariadb.jdbc.Driver jdbc-url: jdbc:mariadb://localhost:3306/jpa username: root password: ***..