일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬
- 코틀린
- C++
- python
- programmers
- 정보처리산업기사
- java
- BFS
- 코딩교육봉사
- 백준 알고리즘
- 백준
- CJ UNIT
- SW봉사
- 데이터베이스
- 소프티어
- 코딩봉사
- 문제풀이
- 스프링
- SQL
- 1과목
- 공부일지
- MYSQL
- 회고
- softeer
- 자바
- 시나공
- 프로그래머스
- 백준알고리즘
- kotlin
- 알고리즘
- Today
- Total
목록백엔드 (150)
JIE0025
. ✅ 개요 이전에 아래와 같은 상황이 발생했었는데... https://jie0025.tistory.com/618 한 트랜잭션에서 동일한 데이터를 조회하면? (MyBatis의 캐싱전략과 localCacheScope 설정하기)✅ 가정 학생이 존재한다. 학생은 학년별로 성적표를 출력할 수 있다. 학년당 2학기가 존재하고, 성적표 또한 학기별로 출력된다. 위의 이미지는 2학년 성적표를 조회하는 상황이다. 1학기, 2학jie0025.tistory.com 정리하자면 한 요청상황에서 (동일 트랜잭션) 파라미터까지 똑같은 쿼리를 할 경우MyBatis 는 내부 캐싱을 사용하고,이에 따라 쿼리와 쿼리사이에서 해당 엔티티의 값이 변경될 경우이후 쿼리 상황에서 바뀐 값으로 출력된다. 이 문제가 Local에서만..
✅ 가정 학생이 존재한다.학생은 학년별로 성적표를 출력할 수 있다.학년당 2학기가 존재하고, 성적표 또한 학기별로 출력된다. 위의 이미지는 2학년 성적표를 조회하는 상황이다. 1학기, 2학기 성적표를 둘다 체크하여 한번에 요청하면한번에 성적표 2개가 보인다. * 1학기 성적표 한개만 체크하면 성적표 1개만 보인다. ✅ 상황한번에 2학년 1학기, 2학기를 성적표를 조회하는 과정은 한 트랜잭션에서 일어난다. 💻 수도코드성적표 객체 생성출력해야하는 개수만큼 반복 학생을 조회한다. 학생의 개인정보가 존재한다면 복호화한다. 해당 학기에 무슨 과목을 들었는지 리스트 생성 Database에서 학생의 성적데이터를 가져오는..
✅ Office Reservation SystemView All Employee Work Status APISeat Reservation APICancel Seat Reservation API ✅ Architecture LanguageKotlinServerSpringBoot **2.7.17Gradle - KotlinDBMySQLSpring Data JPA (Hibernate)QueryDslDocumentSwagger 3.0.0 TestingMockK (Mockiing Library)IntelliJ (Test Coverage) ✅ Detailed Requirements Definition There are a total of 100 seats available (1~100). Each employee ca..
✅ 선행 개념 먼저 비관적 락이 무엇인지에 대한 개념은 아래 글에 적어놓았다. https://jie0025.tistory.com/603 비관적 락은 무엇이고 왜/언제 사용할까? ✅ 비관적 락 ? DB관리에서 사용하는 기술 중 하나이다. 충돌이 발생할 것 같으니 조취를 취하자. 간단하게 설명하면 어떤 이용자 A 가 데이터를 Read/Write할 때, 미리 락(Lock)을 걸어서 다른 사용자 jie0025.tistory.com ✅ 동시에 API 요청 넣어보기 락을 사용하지 않았을때 발생하는 문제를 직접 눈으로 확인해보자. 동시 요청을 보내는 가장 간단한 방법이 있다. ⏺ curl 커맨드 ? CLI를 이용해 API 데이터를 요청할 수 있는, HTTP 클라이언트 도구 중 하나 * GET방식 옵션 없이 아래처럼 ..
✅ QueryDSL 설정하기 1️⃣ build.gradle.kts에 plugins 추가 plugins { //for querydsl kotlin("kapt") version "1.7.10" } 2️⃣ dependencies 추가 이후 dependencies를 추가해주면 되는데, 나는 kapt에서 빨간줄이 뜨길래 plugins만 추가하고, 빌드한번 해준 다음 dependencies를 추가했다. dependencies { //querydsl implementation("com.querydsl:querydsl-jpa:5.0.0") kapt("com.querydsl:querydsl-apt:5.0.0:jpa") } 3️⃣ Build 빌드 성공시 인텔리제이 좌측 상단 build > generated > source..
✅ 개요 Hibernate를 이용한 엔티티 생성을 하다가 해당 내용을 정리할 필요성이 생겨서 가져왔다. 🤔 클래스를 선언할 때 (소괄호)와 {중괄호}는 어떤 역할을 할까? 각 자리에 선언되는 필드들은 어떤차이가 있을까? ✅ 예제 코드 메모라는 엔티티 클래스를 간단하게 만들었다. 소괄호 ( ) 안에 title을 선언, 중괄호 { } 안에 memoId, contents가 선언되어있다. @Entity @Table(name = "memo") class Memo ( @Column(nullable = false, length = 30) var title: String ) { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "memoId"..
✅ 개요 Kotlin - Springboot , JPA - Hibernate - DB를 쓰는 상황이다. DB연결을 위해 Entity 클래스를 선언함에 있어 고민이 생겼다. ✅ 엔티티 생성에서 data class를 쓰는것이 좋을까 ? 결론부터 말하면 아니다. 엔티티 클래스는 다음과 같은 필요조건을 갖고있다. ✔️ 엔티티 클래스의 필요조건 클래스는 반드시 javax.persistence.Entity 어노테이션을 적용해야 함 클래스는 반드시 public/ protected의 no-arg 생성자를 갖고 있어야함 (다른 생성자가 있을수도 있다.) 엔티티는 반드시 final이면 안된다 (메소드/인스턴스 변수 모두) 엔티티는 엔티티가 아닌 클래스를 상속할 수 있다. etc 첫번째. 엔티티는 반드시 final이면 안된..
✅ 개요 이전부터 팀 프로젝트는 거의다 모놀리식으로 만들어졌었다. 이후 인턴 생활 중 마이크로서비스에 사용될 프로젝트를 진행하게 되었고 이에 대해 공부해야지 하다가 이제야 글을 쓴다. MSA에 대해 좀 더 자세히 공부해보고, 구조를 이해해보자 (실습은 천천히 해보고 글 올려야지 😊) ✅ 마이크로서비스 ? 애플리케이션 개발 기법중 하나로 기능을 조합해 앱을 실현하는 기술이다. 소규모 기능을 서버 서비스로 구현한 것 기능들을 결합해 다른 기능/서비스를 실현할 수 있다. 1. 각 요소가 독립 되어있다. > 각 요소는 특정 비즈니스 기능을 수행한다. 2. 요소별로 통신을 해서 기능/ 데이터를 교환한다. > API를 통해 서로 통신한다. ✍️ 요약 모놀리식은 애플리케이션을 하나의 SW로 구축하는 반면, MSA는 ..
✅ 개요 이전에 멀티스레딩의 필요성과 기초 지식에 대해 공부했었다. https://jie0025.tistory.com/569 멀티스레딩의 개요 및 운영체제 기초 ✅ 멀티스레딩은 왜 필요할까? 2가지 (응답성, 성능)를 위해서이다. 1. 응답성 만약 수천명이 사용하는 온라인 마켓 Web Application이 있다고 가정해보자. 모든 사용자의 구매정보를 DB에 저장하는데, jie0025.tistory.com 이번에는 스레드를 생성하는 2가지 방법과, 스레드의 우선순위에 대해 알아보자. ✅ Runnable 인터페이스를 구현하여 스레드 생성하기 Thread를 생성하는 첫번째 방법은 Runnable 인터페이스를 구현하는것이다. Runnable 인터페이스에는 run()이 정의되어있기 때문에 @Override를 통..
✅ 개요 애플리케이션의 요구사항은 계속해서 변한다. 오리가 수영하고, 소리를 낼 수 있다는 슈퍼클래스를 만들고 오리인형, 오리A, 오리B가 슈퍼클래스를 상속받도록 했다고 가정해보자. 다음 요구사항이 들어왔다. 오리가 날 수 있게 만들어줘 ✍️ 상속을 사용하는것은 좋지 못할 수 있다. 슈퍼클래스에 Fly()를 추가하는 방법이 있다. 그러나 오리 인형이 를 상속받고 있기 때문에 사용할 수 없다. (오리인형은 수영할 수 있지만, 날 수 없다.) ✍️ 인터페이스를 사용할 경우는? Flyable이라는 인터페이스를 만들면 날아야만 하는 오리들에 대해서만 구현해주면 된다. 그러나 코드 중복을 무시할 수 없고, 날 수 있는 오리의 종류가 100가지가 넘어가게 되면 코드를 전부 고쳐주어야한다. 재사용에 유연한 코드를 작..