Backend/Spring 36

DB 연동4/4_ JPA. DB dialect hibernate. debug. entity dto

DB 연동방법 4 1. 클래스내에서 직접 sql문 기술2. 스프링이 지원하는 jdbcdao support 사용3. mybatis 프레임워크사용4. jpa 사용  요즘은 jpa를 가장 많이 사용하고, 가장 권장하는 추세라고 한다. 왜일까? 백엔드에서 데이터를 저장하고 조회하려면 데이터베이스를 활용해야 하는데, 백엔드에서 데이터베이스를 사용하는 프레임워크로 가장 많이 쓰이는 기술이 ‘Mybatis’와 ‘JPA' .Java 기반의 Spring 또는 Springboot에서 데이터베이스를 사용하려면 두 가지 기술 중 하나를 사용해야 하기 때문에 Java 백엔드 개발자는 ‘Mybatis’와 ‘JPA’를 반드시 알아야 합니다. 데이터베이스 접속을 편하게 사용하기 위해 SQL Mapper 기술과, ORM(Object ..

Backend/Spring 2024.07.14

DB 연동3/4_mybatis. lombok annotation.

DB 연동방법 4가지1. 클래스내에서 직접 sql문 기술2. 스프링이 지원하는 jdbcdao support 사용3. mybatis 프레임워크사용4. jpa 사용  MyBatis란?  MyBatis 프레임워크는 반복적인 JDBC 프로그래밍을 단순화하여, 불필요한 Boilerplate 코드를 제거하고, Java 소스코드에서 SQL 문을 분리하여 별도의 XML 파일로 저장하고, 이 둘을 서로 연결시켜주는 기능을 제공해준다. MyBatis의 특징Java 코드와 SQL 매핑MyBatis를 사용하면, MyBatis 내부에서 그러한 Boilerplate 코드가 구현되어 있고, MyBatis에서 Java 메소드와 SQL 간에 매핑을 시켜서 개발자는 Java 메소드 선언과 SQL 문만 만들면 MyBatis가 자동으로 그..

Backend/Spring 2024.07.14

DB 연동 2/4_ JdbcDaoSupport

db연동방법41. 클래스내에서 직접 sql문 기술2. 스프링이 지원하는 jdbcdao support 사용3. mybatis 프레임워크사용4. jpa 사용앞에서 살펴본 DataBase 연동방법1은 Spring을 공부하기 전에도 시도했던 방법과 유사했다. 이번에는 Spring에서 제공하는 클래스를 사용하여 db연동을 해보고자한다.   jdbcdaosupport란? JdbcDaoSupport 클래스는 Spring 프레임워크에서 제공하는 추상 클래스.데이터베이스와 상호 작용하는 DAO를 개발할 때 편리한 기능을 제공해준다.이 클래스는 JdbcTemplate을 사용하여 데이터베이스 작업을 처리하고, 템플릿 메소드 패턴을 활용하여 일반적인 데이터 액세스 작업을 구현해준다.  JdbcDaoSupport 의 멤버메소드..

Backend/Spring 2024.07.14

DB 연동1/4_ 클래스내에서 직접 sql문 적기

Spring에서 잘 쓰이는 db 연동방법은 하단처럼 4개. 차례로 하나씩 살펴보려 한다. db 연동방법41. 클래스내에서 직접 sql문 기술2. 스프링이 지원하는 jdbcdao support 사용3. mybatis 프레임워크사용4. jpa 사용 다이어그램    DB연동을 위해 pom.xml에 추가적으로 db관련 dependency들을 기입해줌.  SangpumImpl.java에서 디비연동을 위해 클래스에서 디비연동을 해준다. 어노테이션부분을 보면 repository. db연동목적의 클래스임을 확인할 수 있다.  @Repositorypublic class SangpumImpl implements SangpumInter { private Connection conn; private PreparedStatem..

Backend/Spring 2024.07.14

Spring Boot 환경설정

스프링 프레임워크는 자바 기반의 엔터프라이즈 애플리케이션 개발을 위한 강력한 도구로써, 다양한 기능과 라이브러리를 제공하여 개발자가 보다 쉽게 엔터프라이즈 레벨의 프로젝트를 개발할 수 있다.스프링 부트는 스프링 기반 애플리케이션을 더 빠르고 쉽게 개발할 수 있도록 도와주는 도구이다. 개발 프로젝트의 기본적인 설정을 자동으로 해주며, 내장 서버를 통해 별도의 서버 설정 없이 애플리케이션을 실행할 수 있게 해준다. 이 기능들은 개발자가 애플리케이션을 더 빠르게 개발하고 배포할 수 있게 해주기 때문이다.다시 말해 스프링 부트는 스프링의 설정을 자동화하고, 개발자가 비즈니스 로직에 더 집중할 수 있게 해주며, 애플리케이션의 빠른 프로토타이핑과 개발을 가능하게 한다.  스프링부트의 자동설정 +  mvc 패턴의 역..

Backend/Spring 2024.07.10

AOP란? Proxy란?

AOP의 핵심기능, 부가기능 애플리케이션 로직은 크게 핵심 기능과 부가 기능으로 나눌 수 있다. 핵심 기능 Core Concerns : 해당 객체가 제공하는 고유의 기능. 부가 기능 Cross-cutting Concerns : 핵심 기능을 보조하기 위해 제공되는 기능 ( ex: 로그 추적 기능, 트랜잭션 기능 )보통 기존 프로젝트에 부가 기능을 추가하게 되면, 그림처럼 하나의 클래스가 아닌 여러 클래스에 부가 기능을 추가하게 된다. 예를 들어서 프로젝트의 모든 클래스에 로그 기능을 추가 한다고하면, 하나의 부가 기능(로그 추적)을 여러 곳에 동일하게 사용하게 된다. AOP란?Aspect Oriented Programming 관점 지향 프로그램 객체지향의 기본원칙(OOP)으로는 핵심기능에서 부가기능을 분리..

Backend/Spring 2024.07.08

@Qualifier, @Resource, @Value

@Qualifier@autowired 타입으로 매핑!@Autowired private SenderInter senderInter;라고 해주고 sender, sender2 둘다 인터페이스해주면  expected single matching bean but found 2: sender,sender2라고 에러문구가 뜬다. 인스턴스된 객체가 두개라 에러가 떨어지는것.  해결방법 :@Qualifier("sender")센더인터타입이 두갠데, 그중에 센더와 매핑한다는것.즉 퀄리파이어는 오토와이어드의 보조어노테이션 @Resource @Resource는 @Autowired와 달리 객체변수이름으로 매핑을 한다.  pojo란?POJO란 Plain Old Java Object의 약자로, 이를 직역하면 순수한 오래된 자바 객체..

Backend/Spring 2024.07.07

@Scope, @Autowired @Resoruce, @PreConstruct @PreDestroy

@Scope("Singleton") vs @Scope("prototype")스코프의 기본값이 싱글톤인건 앞서 공부했다. 그렇다면 프로토타입, 싱글톤은 어떤 상황에서 구분해서 사용할 수 있을까 Bank.javapackage pack.bank;public interface Bank { void inputMoney(int money); //입금 void outputMoney(int money); //출금 int getMoney(); //잔고확인}HanaBank.javapackage pack.bank;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Component;@Component//@Scope(..

Backend/Spring 2024.07.07

MyBatis란? Pooling기법

MyBatis란?MyBatis는 자바 개발자들이 데이터베이스를 쉽게 다룰 수 있도록 도와주는오픈 소스 ORM(Object-Relational Mapping) 프레임워크이다. MyBatis의 주요 장점유연성: SQL 쿼리를 직접 작성할 수 있으므로 매우 유연하다. 또한, MyBatis는 동적 쿼리를 작성할 수 있다.간결성: MyBatis는 SQL 쿼리와 프로그래밍 언어 코드를 분리하기 때문에 코드가 간결해져 유지보수에 용이성능: MyBatis는 캐시 기능을 제공하여 데이터베이스 연산 속도를 높일 수 있다.다양한 데이터베이스 지원: MyBatis는 다양한 데이터베이스에 대한 지원을 제공한다. Configuration.xml  m..

Backend/Spring 2024.07.04

constructor/setter injection, scope 다형성 캐스팅

이번에는 Constructor Injection, Setter Injection 모두 적용시켜보자. Sum up!   기본 작업pom.xml - maven 작업. dependencies 넣어주기 분류작업을 위해 package model, controller, other를 만들어주었다. Model 부터 시작인터페이스 & 클라스 생성하기. MyInfoInter.javapackage pack.model;public interface MyInfoInter { String myData();} MyInfo.javapackage pack.model;public class MyInfo implements MyInfoInter { @Override public String myData() { return "취미는 ..

Backend/Spring 2024.07.04