db(10)
-
스프링 DB 접근 기술
H2 데이터베이스 설치실무에서는 Mysql, Oracle을 쓰지만, 이번시간에는 20년전에 개발했던 DB를 사용해보자. 테이블 생성하기테이블 관리를 위해 프로젝트 루트에 `sql/ddl.sql` 파일을 생성순수 Jdbc환경 설정build.gradle 파일에 jdbc, h2 데이터베이스 관련 라이브러리 추가DataSource는 데이터베이스 커넥션을 획득할 때 사용하는 객체다. 스프링 부트는 데이터베이스 커넥션 정보를 바탕으로 DataSource를 생성하고 스프링 빈으로 만들어둔다. 그래서 DI를 받을 수 있다.구현 클래스 추가 이미지스프링 설정 이미지개방-폐쇄 원칙(OCP, Open-Closed Principle)확장에는 열려있고, 수정, 변경에는 닫혀있다.스프링의 DI (Dependencies Injec..
2025.09.24 -
회원 관리 예제 - 웹 MVC 개발
회원 웹 기능 - 홈 화면 추가홈 컨트롤러 추가회원 관리용 홈참고: 컨트롤러가 정적 파일보다 우선순위가 높다.회원 웹 기능 - 등록회원 등록 폼 개발 회원 등록 폼 컨트롤러회원 등록 폼 HTML ( `resources/templates/members/createMemberForm` )회원 등록 컨트롤러웹 등록 화면에서 데이터를 전달 받을 폼 객체@Getmapping, @Postmapping회원 웹 기능 - 조회 회원 컨트롤러에서 조회 기능회원 리스트 HTML퀴즈요청 처리 시 스프링 MVC는 컨트롤러 매핑과 정적 자원 중 무엇을 먼저 찾을까요?스프링 MVC는 특정 경로에 대해 먼저 컨트롤러 매핑을 찾고, 없으면 정적 자원을 찾습니다. 이를 통해 웹 기능을 우선 처리할 수 있습니다.회원 가입처럼 서버 상태..
2025.09.22 -
DB 설계 Q&A
정규화를 하면 성능이 떨어진다던데요 ?✅ 정규화를 하면 성능이 떨어진다던데요 ?특정 회사의 데이터베이스를 까보면 정규화가 안 되어 있는 설계를 종종 만난다. 그래서 DB 설계를 하신 분한테 왜 정규화를 적용시키지 않았냐고 물어보면 대부분 아래와 같이 답변한다.정규화를 지키면 테이블 개수가 많아져서 관리가 불편해요.→ 데이터 중복으로 인해 발생하는 단점들이 훨씬 크고 관리하기가 더 어렵다.정규화로 테이블을 나누면 조회할 때 JOIN을 해야 해서 쿼리가 복잡해져요.→ 이렇게 얘기하는 사람 치고 SQL문 잘 작성하는 사람 못봤다. 자신이 JOIN 문이 어려우니까 쿼리가 복잡하다고 얘기하는 것이다. SQL문에서 JOIN문은 기본적인 문법 중 하나다.JOIN을 많이 하면 할수록 성능이 안 좋아져서 정규화를 안 했..
2025.08.27 -
설계한 모델을 실제 DB에 반영하기
설계한 모델을 실제 DB에는 어떻게 반영하나요?1. SQL문(DDL) 활용하기- 코테로 먼저 연습해보기- 프로그래머스로 연습해보았다.2. DB 관리 툴(MySQL Workbench, DBeaver 등) 활용하기- 지금 내가 연습해야될 부분이다. 2학년 때 배웠고 실습도 해봤지만 다 까먹었다... 전공생 맞냐...3. ORM활용하기- 최근에는 JPA(spring), TypeORM(node), Sequelize (node) 와 같은 라이브러리를 활용해서 데이터베이스를 많이 다룬다. 이 라이브러리를 활용하면 DB에서 테이블을 일일이 만들 필요 없이, 코드 내부에 라이브러리를 활용해 DB에 대한 정보를 입력해서 실행시키면 알아서 테이블을 만들어준다.- 최근에 ORM을 활용해서 데이터베이스 테이블을 만드는 경우가..
2025.08.26 -
[실습] 화면 UI 디자인을 보고 DB 설계해보기
* 이 글은 개발 공부를 위한 블로그글로 지식전달보다는 개발 공부 일지에 초점이 맞춰져 있으니 유의하시길 바랍니다.UI 하나하나보고 데이터 파악하기- 프론테엔드 개발자에게 하나하나 어떤 데이터를 뜻하는 지 물어봐야 함.- 보통 피그마 많이 사용함.- 프론트에서 고정적으로 데이터를 저장할 수도 있고, 자주 바뀌는 데이터라면 백엔드에 데이터를 저장하고 프론트로 가지고 가게 할 수도 있다. 이 부분은 그때그때마다(서비스마다) 다르다.- 프론트와의 소통이 아주 중요해보인다. 자주자주 물어보고 확인하는 과정이 꼭 필요하다.*역정규화개념이 있을 수 있다. 테이블을 나눠주지 않고 데이터를 사용하는 경우인데, 이는 나중에 데이터베이스를 숙달한 후에, 다시 공부하는 것을 추천한다.데이터를 파악하고 나서부터는 6가지 규칙..
2025.08.21 -
[실습] 요구사항을 보고 DB 설계해보기 - JSCODE 커뮤니티
* 이 글은 개발 공부를 위한 블로그글로 지식전달보다는 개발 공부 일지에 초점이 맞춰져 있으니 유의하시길 바랍니다. 이전에 배웠던 것을 적용해보자!✅ 요구 사항회원가입 기능회원가입을 할 때 이메일, 비밀번호, 이름, 나이의 정보를 받는다.로그인 기능로그인할 때 이메일, 비밀번호를 활용해서 로그인한다.게시글 작성 기능로그인한 사용자만 게시글을 작성할 수 있다.게시글에는 제목과 내용을 작성할 수 있고, 해시태그를 달 수 있고, 게시글의 카테고리(정보 게시글, 홍보 게시글 등)를 고를 수 있다.게시글 조회 기능작성자, 게시글 제목, 게시글 내용, 게시글 작성 시간, 좋아요 수, 조회 수를 조회할 수 있어야 한다.해시태그로 게시글 조회 기능특정 해시태그를 가진 모든 게시글을 조회할 수 있어야 한다.좋아요 기능로..
2025.08.21