본문 바로가기

728x90
반응형
SMALL

분류 전체보기

(113)
JPA 와 Mybatis 같이 사용하기 안녕하세요. JPA 는 ORM 으로 단순 CRUD 처리에 대해 편리하게 해주는데요. 실무에서 정산 쿼리나, 복잡한 여러 조인이 필요한 쿼리들이 있을 때에는, JPA 보단 mybatis를 혼용해서 쓴다고 합니다. 그래서 지금 JPA 와 MyBatis 를 혼용하여 쓰고, 한 트랜잭션 안에 잘 묶여있는지 확인 테스트 까지 해보겠습니다. 데이터베이스는 h2 database 를 사용하겠습니다. (경량용 디비로 테스트 하기에 적합함.) h2사용법 H2 Database 란? 그리고 사용법? H2 Database 란? H2는 자바로 작성된 관계형 데이터베이스 관리 시스템이다. 장점 따로 설치가 필요없다 용량이 매우 가볍다 웹용 콘솔(쿼리툴) 제공하여 개발용 로컬DB로 사용 용이 특징 JAVA로 작성 yjkim-dev...
SpringBoot + WebSocket server 간단하게 구현해보기 스프링부트에서 웹소켓 서버 세팅을 하여 실시간으로 메세지를 주고받을 수 있는 서버를 만들어 보겠습니다. 정말 간단합니다. 먼저 의존성을 주입해줍시다. [Gradle] implementation 'org.springframework.boot:spring-boot-starter-websocket' [Maven] org.springframework.boot spring-boot-starter-websocket 그다음에는 websocket에 대한 전반적인 설정을 해줘야 합니다. 어떤 요청에 대한 어떤 응답을 할것인지에 대한 정의를 결정합니다. @Configuration @EnableWebSocket @RequiredArgsConstructor public class WebSocketConfig implement..
springboot 에서 mongodb 접속하기(비밀번호설정되있을경우) mongoDB를 써보고싶어서 비밀번호 설정도 안하고 막무가내로 Springboot 설정에 mongodb를 연동하였다. '와 이렇게 쉽다고??' 라고 생각하고 시간이 지나고 지나고 지나고..... 어떤 이상한 사람이 내 mongodb에 들어와 데이터를 싹다 지우고 BTC(비트코인)을 달랜다.... 그럼 데이터 복구해주겠다나머라나... 어차피 더미데이터 뿐이여서 큰일은 아니였지만, 비밀번호 설정을 따로 해야겠다는 생각이 들었다. mongoDB 비밀번호 설정하는 법 # vi /etc/mongod.conf // 인증 disabled 처리 security: authorization: enabled # authorization: disabled # keyfilekeyFile: /etc/mongodb_key # se..
Command 'mongo' not found 몽고디비 몽고디비 쉘 접속이 안됀다.. 원인이뭘까. 일주일 내내 엄청나게 찾아봤다...... 원인. mongodb 버전 6.0 이상을 사용하는 경우 mongodb 셸 에 들어가기 위해 사용해야 하는 명령이 mongo 에서 mongosh 로 변경됨... mongo 로 쳐서 들어가는게 아니라 mongosh 로 해야함.. 끝...
변경된 칼럼만 update 하기. Dirty Checking으로 생성되는 update 쿼리는 기본적으로 모든 필드를 업데이트한다. 또한 JPA는 전체 필드를 업데이트하는 방식을 기본값으로 사용한다. 필드가 20~30개 이상인 경우에 전체 필드 update가 부담스러운 경우 (이런 경우 정규화가 잘못된 확률이 높다.) @DynamicUpdate로 변경 필드만 반영되도록 할 수 있다. 엔티티 최상단에 @DynamicUpdate를 선언해준다. @Entity @Getter @DynamicUpdate //변경된 데이터만 업데이트 public class Team { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String teamName; } 끝
Dirty Checking(더티 체킹) 이란. JPA는 조회, 저장, 삭제에 대한 기능을 제공하지만, 수정에 대한 기능이 따로 존재하지않는다. 그래서 Dirty Checking 이란 것을 제공한다. JPA에서는 트랜잭션이 끝나는 시점에 변화가 있는 모든 엔티티 객체를 데이터베이스에 자동으로 반영해준다. 변화의 기준은 최초 조회 상태이다. 이런 JPA 에서는 수정에 대한 기능이 따로 존재하지 않기 때문에, Dirty Checking 을 제공해주는데. Dirty Checking은 Transaction 안에서 엔티티의 변경이 일어나면, 변경 내용을 자동으로 데이터베이스에 반영하는 JPA 특징이다. 이해를 위해 예시를 보자. Member라는 테이블에 ID=5 에 해당하는 데이터가 들어있다. [Controller] @PutMapping("/test") pub..
SpringBoot Paging(페이징)에서 제공하는 변수 커스터마이징 하기. public void pagingInfo(Pageable pageable){ } Pageable 객체는 개발자가 페이징을 쉽게 할수 있도록 도와줍니다. Pageable 객체 안에는 기본적으로 제공하는 메소드 기능들이 있습니다. 그중 저희는 getPageSize와 getPageNumber 를 볼 겁니다. getPageSize는 나타내고자 하는 요소의 수를 나타냅니다. getPageNumber는 현재 페이지를 나타냅니다. 기본적으로 요소의 수는 파라미터명이 = size, 현재페이지 정보는 = page 로 되어있습니다. 예시를 보면 url : http://localhost:8080/api/v1/members 설명 : 멤버의 전체목록리스트를 불러오는 api 입니다. 가정 : 유저100명. 이대로 API 요청을 ..
MongoDB active failed 문제( result- exit-code) sudo systemctl status mongod 확인해보니, 계속 Active: failed 만 발생하고, 몽고디비가 실행이 안됍니다. 그리고 아래의 오류메세지를 직면합니다. sudo systemctl start mongod 암만 mongod 실행시켜도 무반응으로 Active 상태가 바껴있지않습니다. 이럴때 해결책. sudo vi /var/log/mongodb/mongod.log {"t":{"$date":"2020-10-07T05:13:22.639+00:00"},"s":"E", "c":"NETWORK", "id":23024, "ctx":"initandlisten","msg":"Failed to unlink socket file","attr":{"path":"/tmp/mongodb-27017.sock"..

728x90
반응형
LIST