본문 바로가기
반응형

Back-End74

트랜잭션 전파 ≣ 목차//// Source code recreated from a .class file by IntelliJ IDEA// (powered by FernFlower decompiler)//package org.springframework.transaction.annotation;public enum Propagation { REQUIRED(0), SUPPORTS(1), MANDATORY(2), REQUIRES_NEW(3), NOT_SUPPORTED(4), NEVER(5), NESTED(6); private final int value; private Propagation(int value) { this.value = value; } .. 2024. 7. 26.
Transaction ≣ 목차트랜잭션을 잘게 나누면 보정배치가 쉬워지고 트랜잭션이 왜 실패했는지 추적할 수 있다.충돌 횟수를 고려하여 락 종류를 선택한다.자기 자신만 접근하는 로직일 경우 충돌이 적을 확률이 높아진다.트랜잭션 작은 단위로 나눌 시, Manager (application 계층) 추가 또는 service 에서 필요한 repository 를 DI 받아서 하나의 메서드에서 처리한다.만약 연관 관계가 맺어져있다면?reservation.getUser().usePoint(amount)exception 이후에 코드가 실행되지 않는지 체크하고 테스트 할 필요성이 있다.트랜잭션 사용 논리적 흐름구분해서 고려할 필요가 있다.실제 비즈니스 기반의 로직시스템 입장에서의 로직동시성 제어트랜잭션공유락, 배타락 = 트랜잭션 동시성 제어 .. 2024. 7. 23.
@Transactional ≣ 목차 스프링의 AOP 를 통해 @Transactional 어노테이션을 사용해서 트랜잭션을 걸 수 있다.조회용 메서드에 @Transactional(readOnly = true) 속성을 설정하면 성능상 이점을 얻을 수 있다. + Lazy Loading, Replication 과 같이 트랜잭션 범위 내에서 수행해야 되는 동작이 있는 경우에 적절하게 활용하는 것이 좋으며, 무분별하게 사용할 경우 Snapshot 유지, Flush 의 필요 등 관리적/메모리적 측면에서 좋지 않을 수 있고, 커넥션을 오래 가지고 있어서 커넥션 부족 등의 문제가 발생할 수 있음을 유의한다. readOnly = trueJPA - Session Flush Mode Setting스프링 프레임워크가 JPA 의 세션 플러시 모드를 'MAN.. 2024. 7. 15.
Spring Controller header 값 가져오기 @RequestHeader(""): "" 내부에 있는 헤더명으로 헤더 값을 받아오도록 설정할 수 있다.HttpServletRequest 객체: 객체를 파라미터로 받아와 getHeader 메서드를 통해 헤더 값을 가져올 수 있다.import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestHeader;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.Ht.. 2024. 7. 10.
MySQL root 계정 비밀번호 재설정 MySQL 서버 중지sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plistHomebrew 를 통해 설치한 경우brew services stop mysql MySQL 서버를 안전 모드로 시작인증을 무시하고 안전 모드로 시작하면 비밀번호를 요구하지 않는다.sudo mysqld_safe --skip-grant-tablesERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)접속되어있지 않은 경우 MySQL 접속brew services listbrew services start mysql안전 모드로 접속 성공my.. 2024. 7. 9.
데이터베이스 decimal 타입 JPA 에서 표현하기 Double 등의 타입을 사용할 수 있지만, 부동 소수점 연산의 정밀도 문제로 인해 BigDecimal 이 더 안전되게 사용된다.BigDecimal@Entitypublic class EntityClass { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(precision = 10, scale = 2) private BigDecimal decimalField;} @DecimalMin, @DecimalMax0.00 ~ 99999.99 사이의 값을 가질 수 있도록 제한할 수 있다.@Entitypublic class EntityClass { @Id @GeneratedValue(.. 2024. 7. 9.
@UniqueConstraint 와 @Colume 의 unique 속성 차이 둘다 JPA 에서 Unique Key 를 정의하는 데 사용되는 애노테이션이다. @UniqueConstraint@Table 내에서 사용된다. 테이블 수준에서 UK 를 정의할 수 있다.여러 개의 필드나 필드의 조합을 통해 UK 를 설정할 수 있다.@Entity@Table(name = "entity_table", uniqueConstraints = { @UniqueConstraint(name = "uk_constraint_name", columnNames = {"column1", "column2"})})public class EntityClass { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @C.. 2024. 7. 9.
JPA 적용 및 API 기능 추가하기 ≣ 목차 코드에 정답이 있는 건 아니지만 최대한 클린 코드 하려고 노력해보았다!JPA 공부 후 적용해보기 :)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481.. 2024. 5. 29.
JPA를 사용하는 이유 JDBC -> JDBC Templates -> JPA 반복 코드 감소 SQL쿼리 자동 처리 JPA 기술을 사용하면 SQL 쿼리를 JPA가 자동으로 처리해줌으로써 개발 생산을 크게 높일 수 있다. SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환할 수가 있다. (SQL < 객체 중심으로 고민 가능) 2024. 4. 16.
728x90
반응형