전체 글

Programming/Java

[JPA] 패러다임 불일치 - 우린 달라 달라

자바는 객체지향 언어로 객체 중심적으로 개발하며, 데이터베이스는 데이터를 저장하기 위해 질의어인 SQL을 사용하여 테이블 형태로 데이터를 관리한다. 객체와 테이블은 듣기만 해도 서로 다른 느낌이 들지만 구체적으로 어떤 부분에서 차이가 나는지 설명을 못한다. 그래서 이번에는 이 두 사이의 패러다임 불일치에 대해 이야기하고 JPA를 왜 사용해야 하는지까지 정리해보고자 한다. 패러다임 불일치 - JPA에게 맡기자 ▶️ 상속 Item 객체를 상속받는 Album, Movie, Book 객체를 도식화해서 관계를 나타내보았다. 데이터베이스에서도 Table 슈퍼타입 서브타입 관계로 테이블을 설계할 수 있다. 하지만 이는 객체 상속과 유사한 형태일 뿐이지 같다고 할 수 없다. ITEM은 DTYPE을 통해 앨범과 영화, ..

Programming/Java

[JPA] JPA 시작 - SQL 잘 작성하는 개발자

개발자 ≒ SQL Mapper 자바에서는 객체를 다루고 관계형 데이터베이스는 테이블을 다루게 된다. 객체를 SQL로 변환해서 RDB에 데이터를 관리한다. 그럼, 데이터베이스 연동을 위해 JDBC나 MyBatis를 사용하는 데, 이 두 가지 모두 SQL query를 직접 작성해서 데이터베이스에 넘겨줘야 한다. 이런 경우 어떤 불편한 점들이 있는지 확인해 보자. 클래스에 새 필드 변수가 추가 또는 삭제 되는 경우 회원 클래스에 memberId, name 두 필드 변수가 있다. 여기서 다른 필드 변수 email이 추가되거나, 변수 name이 삭제되는 경우 아래 query가 수정이 필요해진다. 수정 횟수도 많겠지만, Mybatis는 XML 파일에서 SQL 쿼리를 작성해서 컴파일 전 오류를 잡지 못한다. 그래서 ..

Programming/Java

[Java] 패키지 구조

패키지 구조에 대해서 배웠다기 보다 Spring MVC 패턴으로 웹 개발하게 되면 Model, View, Controller 이 세 가지로 나누는 것으로 배웠고, 이 방식이 자연스러운 방식이라고 생각했다. 그런데 github에서 다른 사람들의 코드를 확인하면 내가 배운 내용과 동일한 구조를 가지거나 다른 구조를 가지는 경우가 있었다. 그래서 이참에 한 번 패키지 구조에 대해서 알아보고 정리하고자 작성한다. 1. 계층형 패키지 구조 controller ⎿ TaskController ⎿ MemberController service ⎿ TaskService ⎿ MemberService dao ⎿ TaskDAO ⎿ MemberDAO dto ⎿ TaskDTO ⎿ MemberDTO 위에 패키지 구조가 수업에서 다뤘..

카테고리 없음

[Tistory] 단축키 설정

티스토리 사용하면서 기본 스킨에 적용되어 있는 단축키가 적은 것 같아서 찾아보던 중 좋은 블로그가 있어서 출처를 남기고 적어본다. a: 애드핏c: 카테고리 d: 스킨 편집m: 해당 글 수정 s: 방문 통계 w: 새로운 글쓰기 아래 코드를 티스토리 스킨 변경에서 html 코드 부분에 추가해주면 잘 동작한다. 코드 자체는 어렵지 않으니 JS에 관심 있으면 한 번 알아보는 것도 좋을 듯 하다. 출처: https://vg-rlo.tistory.com/124 [vg-rlo:티스토리]

Programming/Spring | Spring-Boot

[Spring Boot] Swagger 3.0 적용하기

Swagger란 Rest API를 문서화하여 관리 및 테스트할 수 있도록 도와주는 프레임워크이다. 환경설정 java 11 spring boot 2.7.17 swagger : springfox 3.0 Swagger 적용 1. 라이브러리 추가 buil.gradle에 아래의 2개 라이브러리 추가한다. implementation 'io.springfox:springfox-boot-starter:3.0.0' implementation 'io.springfox:springfox-swagger-ui:3.0.0' 2. SwaggerConfig 파일 생성 @Configuration public class SwaggerConfig { @Bean public Docket api() { return new Docket(Doc..

seandoesdev
To get a Lemonade