워크샵6349 141

[Spring] JPA, Hibernate 설명

JPA, Hibernate, Spring Data JPA 이 3가지에 대해서 다소 헷갈리는 점들이 있어서 포스트하고자 했다. 먼저 JPA는 Java Persistence API의 약자로 자바 어플리케이션에서 관계형 DB를 사용하는 방식을 정의한 인터페이스이다. 즉, 라이브러리가 아닌 인터페이스이다. 간혹 JPA와 관련한 오류를 발생하게 되면 EntityManager와 관련한 오류가 발생하는 경우가 종종 있는 데 이때, EntityManager의 역할이 문뜩 궁금해져서 찾아보니 엔티티들을 관리한다. 내부에는 영속성 컨테이너가 있어, 이를 통해 엔티티 관리 여러 엔티티 메니저가 하나의 영속성 컨테이너 공유 가능 Thread-safe 보장 그리고 CRUD (Create, Read, Update, Delete)..

Spring 2022.02.04

[Spring] Hibernate 설명

Hibernate란? Hibernate는 자바 언어를 위한 ORM 프레임워크예요. JPA의 구현체로, JPA 인터페이스를 구현하며, 내부적으로 JDBC API를 사용해요. JPA는 관계형 데이터베이스와 객체의 패러다임 불일치 문제를 해결할 수 있다는 점과 영속성 컨텍스트 (엔티티를 영구 저장하는 환경) 제공이 큰 특징입니다. Hibernate 장점 생산성이 높아진다. Hibernate는 SQL을 직접 사용하지 않고, 메서드 호출만으로 쿼리가 수행됨. 즉, SQL 반복 작업을 하지 않음으로 생산성이 높아짐 SQL을 몰라도 되는 건 아님 (내부 동작에 대해 알아야 하기 때문) 유지보수 측면에서 좋다. 테이블 컬럼이 변경되었을 때, 테이블과 관련된 DAO의 파라미터, 결과, SQL 등을 대신 수행함. 이로 인..

Spring 2022.02.03

[Spring] Spring Data 설명

Spring Data란? 기본 데이터 저장소의 특수한 특성을 유지하면서 데이터 접근을 위해 친숙하고 일관된 Spring기반의 프로그래밍 모델을 제공하는 프로젝트이다. Spring Data는 데이터 접근 기술, relational and non-relational database, map-reduce 프레임워크, 클라우드 기반의 서비스를 쉽게 사용할 수 있도록 도와준다. 또, 데이터베이스와 관련된 많은 프로젝트 (Spring Data JPA, Spring Data REST... 등등)를/을 포함하는 포괄적인 프로젝트 Spring Data 특징 강력한 저장소 및 사용자 정의 객체 mapping 추상화 저장소 메소드 이름으로부터 동적 쿼리 파생 기본 속성을 제공하는 implementation domain 기본..

카테고리 없음 2022.02.02

[Spring] Spring MVC 설명

MVC. Model, View, Controller의 약자로서 3가지를 분할하여 보다 원활하게 개발을 할 수 있습니다. AOP(관점 지향 프로그래밍)와 관련 있으나, 자세한 내용은 추후 포스팅하도록 하겠습니다. (포스팅이후, 해당 포스트 링크 추가하도록 하겠습니다.) Model, View, Controller를 분리한 디자인 패턴 Model Controller에서 View로 객체를 전달하는 데 사용됨 어플리케이션 상태(data)를 나타냄 일반적으로 POJO로 구성함 Java Bean view에서 attribute의 key값을 통해 value값을 사용할 수 있음 View Model data의 렌더링을 담당하며, HTML output을 생성 JSP, thymeleaf, freemarker, groovy 등 ..

Spring 2022.02.01

[Spring] 빈 (Bean) 설명

Bean Bean은 Spring Framework에서 앱을 구성하는 기본적인 객체입니다. 개발자는 Bean을 정의하고, 활용합니다. 그럼 Container는 개발자가 정의한 Bean을 가지고 객체로 만들고 관리하고, 개발자가 필요로 할때 제공합니다. 즉, Bean을 어떻게 정의하고 사용해야하는 지 개발자는 알고 있어야합니다. @Bean // 해당 어노테이션으로 쉽게 정의할 수 있다. Bean은 기본 객체이므로 무엇이든지 될 수 있습니다. 다만 Bean은 BeanDefinition으로 정의됩니다. BeanDefinition에 따라 활용하는 방법이 달라지게 됩니다. BeanDefinition속성에 따라 Container가 Bean을 어떻게 생성하고 관리할지, 그리고 Bean간의 관계를 어떻게 풀어나갈 것인지..

Spring 2022.01.31

[Spring] Spring Core 설명

스프링 코어란(Spring Core)? Spring Container Spring 프레임워크의 근간이 되는요소로 IoC(또는 DI) 기능을 지원하는 영역을 담당합니다. 빈 저장소를 기반으로 빈 클래스들을 제어할 수 있는 기능을 지원하기도 합니다. 빈 저장소의 경우, IOC 패턴이 적용되어 객체 구성부터 의존성 처리까지 모든 일을 처리하는 핵심적인 역할을 합니다. Container는 개발자를 대신하여 Bean을 생성/관리/제거 합니다. Container가 Bean을 전체적으로 관리를 해주므로 덕분에 개발자는 모듈 간에 의존 및 결합으로 인해 발생하는 문제로부터 자유로워졌습니다. 추가로 독립적인 코드를 어노테이션 (@Bean)으로 넘겨주면 Container가 알아서 호출해줍니다. Container가 개발자를..

Spring 2022.01.30

Spring Boot 파일(이미지) 업로드하기

#code 개발 중에 프로필 화면 구현이 필요하였기에 포스트 하기로 했습니다. 먼저 이미지를 저장하는 방식이 여러 방법이 있다고 한다... 그 사실을 몰라서 구글링을 통해 여러 가지 방법을 찾았는 데 대표적인 방법들만 설명하자면 첫 번째는 이미지 자체를 DB에 저장하는 방식 (BLOB 형식 그대로 사용) BLOB이란? Binary Large Object의 약자로서 2진으로 저장을 하며, 주로 소리, 사진 등 멀티미디어들을 가르킵니다. 많은 분들께서 가장 일반적인 방법이네, 요즘은 잘 사용되지않네, DB 병목 등 여러 문제가 있네 등 여러 의견이 분분한데.. 개인적으로 BLOB 방식을 잘 사용하지 않을 것 같습니다. (이미지 하나 가져올 때마다 DB에 접근하여 가져와야하고, 이를 하지 않으려면 캐싱 관련 ..

Spring 2022.01.24

[서버/백엔드] 쿠키, 세션, 캐시 (Cookie, Session, Cache)

웹에 대해서 공부하기 위해 필수적으로 알아둬야하는 기초적인 내용 중 쿠키, 세션, 캐시에 대해서 기록해두고자 포스트하기로 했다. 쿠키(COOKIE) 쿠키는 브라우저가 소지할 수 있는 정보들을 저장하는 저장소입니다. 개인이 확인하고 수정하고 삭제할 수 있는 정보들이 담긴 저장소입니다. 본인이 확인하고 수정 및 삭제할 수 있는 만큼 보안적으로 좋은 방법은 아닙니다. 그래서 중요한 정보들은 쿠키에는 저장하지 않습니다. 쿠키는 보통 자동 로그인, 오늘 하루동안 보지 않기 등 이용자들의 편리함을 주기위한 용도로 주로 사용됩니다. 세션(SESSION) 세션은 본인이 소지할 수 없는 정보들을 저장하는 저장소입니다. 서버에서 이를 관리하는 메모리 혹은 DB에 의해 저장이 됩니다. 서비스를 운영하는 쪽에서만 확인가능한 ..

공부/서버 2022.01.21

Spring Entity 날짜 자동 저장

나름 유용한 내용인 것 같아 포스팅하게 되었습니다. Entity를 만들 때, 최초 생성 날짜, 그리고 제일 최근 수정 날짜 저장을 하고 싶을 때가 종종 있는 데 이를 수동적으로 넣을 수 도 있지만 비즈니스 로직을 작성할 때마다 넣는 것은 굉장히 번거롭기 때문에 Entity를 연결해주는 추상 클래스를 하나 만들어 사용할 수도 있지만 Entity가 적다면 Entity에다가 그냥 적용시킬 수도 있지만 Entity가 하나인 경우는 많이 없다보니 Entity가 2개 이상이기에 추상 클래스를 사용해서 날짜를 자동 저장을 해야하는 상황이라고 가정해보자. 먼저 추상 클래스를 하나 만든다. 이름은 아무렇게나 해도 좋으나 모든 엔티티에 베이스(기초)가 되는 날짜이기에 BaseTimeEntity라고 지었습니다. 어노테이션 ..

Spring 2022.01.19

스타크래프트2 봇 대결 (개발예정)

현재 #code rest api가 어느정도 완성이 되어 열흘 뒤면 마무리되기때문에 그전에 한 번 시도해볼려고 했던 압생트봇 아주어려움 이기기 가 있었는 데, 다소 흐지부지가 되어 매우 아쉬웠기에 다시 한 번 더 해볼 예정인데 일단 계획은 총 2가지 봇을 만들 예정인데 우선 압생트 봇(P)를 하나 만들고 저그봇을 하나 더 만들어 이 둘을 붙여보는 것 역시 재미있겠다는 생각이 들어 만들어 볼 생각입니다. 프로토스 봇 이름은 압생트로 확실하게 지었는 데 저그 봇 이름은 아직 정하지 않아서 혹시라도 저그 봇 이름 아이디어가 있으신 분은 댓글로 적어주세요. 개발할 두 봇들은 다음과 같은 목표를 모두 포함하도록 할 것입니다. 핵심목표 공격가능 유닛(일꾼 제외) 최소 4종류이상 사용 주요 유닛종류마다 클래스를 따로 ..