일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코테준비
- DDD
- 기술공부
- 플러터 공부
- 스프링부트공부
- JPA
- nestjs
- JPA스터디
- 기술면접공부
- JPA공부
- 플러터 개발
- 카프카
- JPA예제
- querydsl
- K8S
- 프로그래머스
- JPA 공부
- 스프링부트
- nestjs공부
- Axon framework
- 자바공부
- 코테공부
- 자료구조공부
- 스프링
- Flutter
- Kafka
- 알고리즘공부
- 스프링공부
- 스프링 공부
- nestjs스터디
- Today
- Total
목록Develop/[JPA] (68)
DevBoi
친구데이터 관련 설계를 하고 있었다. 뭐가 좋을까. 고민 되었다. 특히 추천 친구라는 기능을 하나 만들고 싶었다. 우선 Entity간의 연관관계를 두기 싫었다. 그래서... 나는 이렇게 설계했다. 회원가입하면, Friends 테이블에 자기 자신도 넣어주는 것이다. 자세한건 아래 로직을 보자 1) 회원가입 로직 @PostMapping("/user") public User saveUser(@RequestBody UserDto userDto) { return userService.saveUser(userDto); } public User saveUser(UserDto userDto) { List result = userRepository.findByUserId(userDto.getUserId()); if(re..
해당 설정을 application.yaml에 넣어주면 된다. spring: jpa: properties: hibernate: show_sql: true format_sql: true use_sql_comments: true logging: level: org: hibernate: type: descriptor: sql: trace
buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '3.2.0-SNAPSHOT' id 'io.spring.dependency-management' version '1.1.2' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'com.boiler.flutterbackend' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor ..
java.sql.SQLNonTransientConnectionException: (conn=48) Got a packet bigger than 'max_allowed_packet' bytes 오류가 발생할 수 있다. 아래 두개의 커맨드를 입력해서 디비 설정 값을 바꿔주면 된다. set global max_allowed_packet=1000000000; set global net_buffer_length=1000000;
매번 찾아보고, 약간의 삽질을 하게 되는 JPA 초기 세팅 Mariadb JPA 세팅방법 0. docker image run docker run --name mariadb -d -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=root mariadb 1. build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.2.0-SNAPSHOT' id 'io.spring.dependency-management' version '1.1.2' } group = 'com.boiler.backend' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' conf..
사용을 위한 기본구성 1. JpaFactory package com.practice.demo.config; import com.querydsl.jpa.impl.JPAQueryFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.persistence.EntityManager; @Configuration public class JpaFactory { @Autowired EntityManager em; @Bean ..
1. Build.gradle에 추가 // QueryDSL로 주석 처리한 부분만 신경쓰면된다. // QueryDSL buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '2.7.12-SNAPSHOT' id 'io.spring.dependency-management' version '1.0.15.RELEASE' // QueryDSL id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'com.study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' co..
onetoone 관계의 두 객체가있었다. 둘은 조인을 하고있었고 연결된 다른 객체를 삭제하려고 delete 쿼리를 날렸지만 되지않았다. 당연히 안된다. 이건 JPA를 떠나서 DB 제약조건 때문에 안되는것이다. 바로, 연결된 다른 객체에서 값을 잃어버리기 때문이다. 그래서 찾아본 결과 JPA orphanRemoveal을 제공해준다. 이게 무엇이냐? @OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER) @JoinColumn(name="post_comment_id") private PostComment postComment; 이런식으로 고아 객체 트루로 주게되면 post에서 하위값을 null로 set하고 저장하면 ..
JPA에서 QueryDSL 하기 귀찮아서 그냥 JPQL로 사용하던 중 문제가 발생 delete 쿼리에서 자꾸 DML을 지원안한다는둥 이상한 버그가 많이 떠서 안된다.... 해결 방법 (Modifying) @Modifying @Query("delete from PostComment m where m.post.postId = :postId") void deletePostComment(Long postId); 추가로 서비스 단에 트랜잭션 묶어주기 수정, 삭제는 트랜잭션을 메소드 별로 묶어주는게 좋다. 이유는.. 트랜잭션의 기본을 안다면.. 다알듯... 무튼 JPA는 자동 트랜잭션 처리를 지원해주지만. 혹시나 몰라서 명시를 하긴했다. 사실 해결은 Modifying이 크다. 앞으로는 그냥 QueryDsl로 설계해..
1. TimeEntity를 하나 생성한다. @MappedSuperClass JPA Entity 클래스들이 해당 어노테이션이 붙은 클래스를 상속한 경우 해당 클래스의 필드를 컬럼으로 인식하게 한다. @EntityListeners(AuditingEntityListener.class) 해당 어노테이션이 붙은 클래스에 Auditing 기능을 포함시킨다. @CreatedDate Entity가 생성되어 저장될 때 시간이 자동 저장된다. @LastModifiedDate 조회한 Entity의 값을 변경할 때 시간이 자동 저장된다. 2. 사용하여 추적을 사용할 엔티티를 상속 받게 한다. 3. 메인 클래스에서 추적기능을 킨다. 이러면 끄읏, 정상적으로 되나 보자 된다!